我曾在上一篇文章中研究过这个问题:Combined line & bar geoms: How to generate proper legend?并且已经接近了。这是我使用的代码,它为条形图添加了一个直线和点geom:
mort12=data.frame(
Adj.S=c(.68,.33,.66,.62,.6,.51,.6,.76,.51,.5),
QTL=c(1:10),
Cum.M=c(.312,.768,NA,.854,NA,.925,.954,NA,NA,.977)
)
ggplot(data=mort12, aes(QTL)) +
geom_bar(aes(y = Adj.S, color = "Adj.S"), stat="identity", fill = "red") +
geom_point(data=mort12[!is.na(mort12$Cum.M),], aes(y = Cum.M, group = 1,size=4, color = "Cum.M"))+
geom_line(data=mort12[!is.na(mort12$Cum.M),],aes(y=Cum.M, linetype="dotted",group = 1))
(注意,我有一些Cum.M缺少的数据,所以为了连接这些点,我添加了代码以忽略缺失的值)。
当我运行这个时,我得到这个数字(我不能在这里发布图片,所以它的链接): https://docs.google.com/uc?export=view&id=0B-6a5UsIa6UpZnRZTy1OZmxrY1E
我想控制线条和点的外观。但尝试使线条点缀(linetype =“dotted”)并没有改变它,当我尝试更改点的填充(fill =“white”)时,我发现此错误
错误:连续变量无法映射到形状
有关如何更改线条和点属性的任何建议吗?
答案 0 :(得分:1)
这对我有用:
ggplot(data=mort12, aes(QTL)) +
geom_bar(aes(y = Adj.S, color = "Adj.S"), stat="identity", fill = "white") +
geom_point(data=mort12[!is.na(mort12$Cum.M),], aes(y = Cum.M, group = 1,size=4, color = "Cum.M"))+
geom_line(data=mort12[!is.na(mort12$Cum.M),],aes(y=Cum.M, group = 1), linetype="dotted")
我所做的就是在linetype
之外移动aes
。一般来说,不是由您的数据驱动的aesthetics
不应位于aes
内。例如,size
也可能不在aes
。