簡體   English   中英

ggplot2:如何使用不同顏色的geom_vline()

[英]ggplot2: How to have a different color of geom_vline()

我的情節中有五(5)個geom_vline(),我希望它們有不同的顏色。 有沒有辦法做到這一點?

這是我的代碼,

library(ggplot2)

x <- seq(-7, 8, length = 90)
tvalues <- dt(x,15)

qplot(x, tvalues) + geom_polygon(fill = "purple", colour = "purple", alpha = 0.5) + 
  geom_point(fill = "purple", colour = "purple", alpha = 0.2, pch = 21) +
  geom_vline(xintercept = c(a <- c(-2.27685371,  0.01661155,  
  0.33598194,  1.92426022), mean(a)), linetype = "dashed", colour = "red") + theme_bw() + xlab(bquote(bold('Average Tensile Strength (lb/in'^'2'*')'))) +
  ylab(expression(bold(P(x)))) +
  opts(title = expression(bold("Student t Distribution")), plot.title = theme_text(size = 20, colour = "darkblue"),
       panel.border = theme_rect(size = 2, colour = "red"))

這是輸出,

在此輸入圖像描述

注意圖中的五條垂直線,我希望每條線都有不同的顏色,

我試過這個

library(colorRamps)
geom_vline(xintercept = c(a <- c(-2.27685371,  0.01661155,  
   0.33598194,  1.92426022), mean(a)), linetype = "dashed", colour = matlab.like(5)) 

但沒有工作,另一種嘗試

geom_vline(xintercept = c(a <- c(-2.27685371,  0.01661155,  
   0.33598194,  1.92426022), mean(a)), linetype = "dashed", colour = c("red","blue","green","yellow","orange"))

並且仍然不成功。

提前致謝!

因此,你有點遺漏了ggplot2背后的基本思想,即你總是將所有數據放入data.frame並且映射的每個美學都對應於數據框中的變量。

您可以獲得5條垂直線,每條線都有不同的顏色,並且對geom_vline進行了五次單獨的調用,但是錯過了整個包的重點。 相反,您創建一個數據框:

a <- c(-2.27685371,0.01661155,0.33598194,1.92426022)
vlines <- data.frame(xint = c(a,mean(a)),grp = letters[1:5])

我已經明確創建了一個分組變量grp來映射到colour 然后我們添加圖層並使用aes將美學映射到這些變量:

qplot(x, tvalues) + 
  geom_polygon(fill = "purple", colour = "purple", alpha = 0.5) + 
  geom_point(fill = "purple", colour = "purple", alpha = 0.2, pch = 21) +
  geom_vline(data = vlines,aes(xintercept = xint,colour = grp), linetype = "dashed") + 
  theme_bw() + 
  xlab(bquote(bold('Average Tensile Strength (lb/in'^'2'*')'))) +
  ylab(expression(bold(P(x)))) +
  opts(title = expression(bold("Student t Distribution")), 
       plot.title = theme_text(size = 20, colour = "darkblue"),
       panel.border = theme_rect(size = 2, colour = "red"))

(顏色很難區分,因為它們是虛線,其中兩個幾乎在彼此的頂部。)

如果從過渡離開,你會得到更多的出GGPLOT2qplotggplot()並開始把你的數據轉換成數據幀,而不是載體。

如果你只想放一行,添加下面的geom會在x=1處以紅色和虛線添加一條垂直線。

+ geom_vline(aes(xintercept=1), colour="#BB0000", linetype="dashed")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM