ggplot2中组合条形图,直线和点阳影 - 如何更改点和虚线的填充?

时间:2014-02-13 20:23:26

标签: r ggplot2 bar-chart linechart

我曾在上一篇文章中研究过这个问题: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”)时,我发现此错误

  

错误:连续变量无法映射到形状

有关如何更改线条和点属性的任何建议吗?

1 个答案:

答案 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")

enter image description here

我所做的就是在linetype之外移动aes。一般来说,不是由您的数据驱动的aesthetics不应位于aes内。例如,size也可能不在aes