3
如何讓geom_hline或geom_abline使用的線型顯示在ggplot圖的圖例中?將線型添加到ggplot2中的圖例
例如:
require (ggplot2)
# some data
dummy <- data.frame (category1 = rep (1:5, 8), category2 = rep (1:4, each = 10),
category3 = rep (factor (1:2), 2), expected = 10^rep (4:7, each = 10),
value = 10 ^rnorm(40, 5))
# faceted plot
baseplot <-ggplot (dummy) +
geom_point (aes (category1, value, color = category3))+
scale_y_log10() +
facet_wrap (~category2)
# add a dotted line for expected value
p1 <-baseplot + geom_hline (aes (yintercept = expected), linetype = 2)
我試了幾種方法可以使虛線圖例顯示出來,但他們給了我同樣的事情,P1
p1a < -p1+scale_linetype_discrete (labels = "expected")+
guides (linetype= guide_legend ("", labels ="expected"))
p1b <- baseplot + geom_hline (aes (yintercept = expected, linetype = "expected")) +
scale_linetype_manual (labels= "expected", values = 2)
p1a
p1b
如何多行/線型?
比方說,我也想繪製GroupWise和整體幾何平均值
require (reshape)
require (plyr)
# calculate geometric means, keep them in their own data frame
geometric_mean <- function (x) exp (mean (log (x)))
dummy $GM_overall <- geometric_mean (dummy $value)
extra <- ddply(dummy, c("GM_overall", "expected","category2"), summarize,
GM_group = geometric_mean (value))
extra_long <- melt (GM_group_long, id.vars = "category2")
我預計這種方法來顯示線型基於this post的傳說,但沒有這樣的運氣
p2=baseplot + geom_hline (aes (yintercept = value , linetype = variable), extra)
p2
這裏的另一個情況下,我想要做一些類似的事情
這將是很好的,能夠標記線1:1
dummy$value2 <- dummy $value * runif(40, 0.5, 2)
ggplot (dummy)+coord_fixed() +
geom_point (aes (value, value2, color = category3))+
geom_abline (yintercept =0, slope =1)
我,使用R 3.0.0,ggplot 0.9.3.1
謝謝!爲了完整起見,添加'guides(color = guide_legend(override.aes = list(linetype = 0)))'使得顏色的圖例顯示爲沒有行的點,這對於這種情況更適合。 – janattack