我正在处理一些情节ggplot2
,使用基本情节的函数然后添加一些元素。我有一个涉及添加 a 的问题geom_hline
,但它适用于其他地块,这个似乎不想将线显示为实体以外的任何东西。当我scale_linetype_manual
为这条线时,我必须制作values = 1
否则它会删除这条线(the yintercept = 0.5
)。代码如下:
#Aluminium (dissolved)
prm <- dat2[dat2$ParamID == "Aluminium (dissolved)",]
prm <- prm[prm$SiteID %in% c("SW1","SW2","SW3"),]
gplt <- ggplotCust(prm, c(0.05,1.0), dateStart, dateEnd, "Concentration (mg/L)",0.1) +
scale_y_continuous(trans='log10') +
geom_hline(aes(yintercept=0.5,linetype="dotted"),colour="red",show.legend = NA) +
scale_linetype_manual(name="Guideline Values",values=1, breaks=waiver(), labels="EA Criteria")
前两行是数据(参数和站点)的子集,第三行调用自定义基础图:
ggplotCust <- function(prm, lm, dateStart, dateEnd, yLbl, jt){
ggplot(prm,aes(DateTime, rectRes)) +
geom_point(aes(y = jitter(rectRes,jt), colour =SiteID, shape=SiteID),size=2) +
geom_line(aes(y = jitter(rectRes,jt), colour =SiteID),lwd=1) +
scale_color_manual(name ="Site", values = c("GW1" = 'lightsalmon1', "SW1" = 'dodgerblue4',
"SW2"='forestgreen', "SW3"='purple')) +
scale_shape_manual(name ="Site", values = c("GW1" = 16, "SW1" = 15,
"SW2"=3, "SW3"=7)) +
theme_minimal() +
theme(legend.position="bottom") +
labs(x = "Date", y = yLbl, caption = prm$ParamID[1]) +
scale_x_date(date_breaks = "2 months", date_labels = "%b-%y") +
coord_cartesian(xlim= as.Date(c(dateStart,dateEnd)), ylim = lm)
}
变量是数据集、y 限制(向量)、要放大的开始和结束日期、y 标签和jitter
大小。所以问题是,虽然这适用于 > 1、正确打点或dashdotting
的类似数据linetype
,但它不适用于这个数据。删除日志转换也不起作用。有任何想法吗?数据如下(简化的几行):
排 | 约会时间 | 参数ID | 站点ID | rectRes |
---|---|---|---|---|
114 | 20/04/2010 | 铝(溶解) | SW1 | 0.14 |
154 | 20/07/2010 | 铝(溶解) | SW1 | 0.08 |
196 | 21/10/2010 | 铝(溶解) | SW1 | 0.13 |
234 | 19/01/2011 | 铝(溶解) | SW1 | 0.07 |
289 | 26/05/2011 | 铝(溶解) | SW1 | 0.03 |
328 | 16/08/2011 | 铝(溶解) | SW1 | 0.08 |
任何帮助是极大的赞赏!干杯