我有一个有三条不同线条的情节。我希望其中一条线也有点。我也希望没有点的两条线比没有点的线更粗。我已经设法得到了我想要的情节,但我的传说并没有跟上。
library(ggplot2)
y <- c(1:10, 2:11, 3:12)
x <- c(1:10, 1:10, 1:10)
testnames <- c(rep('mod1', 10), rep('mod2', 10), rep('meas', 10))
df <- data.frame(testnames, y, x)
ggplot(data=df, aes(x=x, y=y, colour=testnames)) +
geom_line(aes(size=testnames)) +
scale_size_manual("", values=c(0.5,1,1)) +
geom_point(aes(alpha=testnames), size=5, shape=4) +
scale_alpha_manual("", values=c(1, 0, 0))
我可以删除第二个(黑色)图例:
ggplot(data = df, aes(x=x, y=y, colour=testnames)) +
geom_line(aes(size=testnames)) +
scale_size_manual("", values=c(0.5,1,1), guide='none') +
geom_point(aes(alpha=testnames), size=5, shape=4) +
scale_alpha_manual("", values=c(1, 0.05, 0.05), guide='none')
但我真正想要的是两个传说的合并 - 带颜色的图例,仅在第一个变量(meas
)上交叉,并且mod1
和mod2
更粗比第一行。我尝试过引导和覆盖,但运气不佳。
答案 0 :(得分:7)
您不需要透明度来隐藏mod1
和mod2
的形状。您可以在NA
中将其形状设置为scale_shape_manual
,从图表和图例中省略这些点:
ggplot(data = df, aes(x = x, y = y, colour = testnames, size = testnames)) +
geom_line() +
geom_point(aes(shape = testnames), size = 5) +
scale_size_manual(values=c(0.5, 2, 2)) +
scale_shape_manual(values=c(8, NA, NA))
这给出了以下图:
注意:我在尺寸比例和其他形状中使用了一些更多不同的值,以便更好地说明效果。