我已经设法让ggplot2创建了我想要的数据集,但我无法弄清楚如何标记我的点。
鉴于数据看起来像这样:
sample <- data.frame(rowid=seq(100), a=runif(100), b=runif(100, .5, 1.5))
我可以创建一个比较这两样东西的情节(考虑到我的真实和更好的标签看起来不那么有趣,但这很好地近似):
ggplot(data=sample) +
geom_point(aes(rowid, a), color="#990000", alpha=0.4) +
geom_smooth(aes(rowid, a), color='#990000') +
geom_point(aes(rowid, b), color='#000099', alpha=0.4) +
geom_smooth(aes(rowid, b), color='#000099') +
labs(x='Trial', y='Time')
我怎样才能得到一个显示红色和蓝色的图例?
修改
感谢baptiste的评论,我现在有以下内容:
wide = melt(sample, id="rowid")
ggplot(data=wide) +
geom_point(aes(rowid, value, color=variable), alpha=0.1) +
scale_alpha(0.3) +
scale_colour_manual(name="Variables", values=c("b"="#990000", "a"="#000099")) +
geom_smooth(aes(rowid, value, color=variable)) +
labs(x='Trials', y='Time')
答案 0 :(得分:5)
Baptiste通过建议使用melt
包裹中的reshape2
向您指出正确的方向。
要分别控制点的alpha值和平滑度,只需在每个geom中指定所需的alpha值即可。请注意,示例代码中的scale_alpha
语句不执行任何操作,因为alpha未映射到任何美学,因此我将其删除。此外,由于您的映射与所有图层相同,因此更容易在ggplot
参数中指定,而不是在geom参数中指定:
sample <- data.frame(rowid=seq(100), a=runif(100), b=runif(100, .5, 1.5))
wide = melt(sample, id="rowid")
ggplot(data=wide, aes(x=rowid, y=value, color=variable)) +
geom_point(alpha=0.1) +
scale_colour_manual(name="Variables", values=c("b"="#990000", "a"="#000099")) +
geom_smooth(alpha=0.8) +
labs(x='Trials', y='Time')