首页 > 解决方案 > R geom_hline 只显示实线

问题描述

我正在处理一些情节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

任何帮助是极大的赞赏!干杯

标签: rggplot2geom-hline

解决方案


移出. linetype="dotted"_aes()

UPD。如果要将其保留在图例中,可以将最后两行修改为以下内容:

  geom_hline(aes(yintercept=0.5,linetype="dotted"),colour="red",show.legend = NA) +
  scale_linetype_manual(name="Guideline Values",values=c(dotted=2), labels="EA Criteria")

推荐阅读