给ggplot添加多个geom_line

4

geom_line CUR_MTH_UNEARN_REV_EUR已经正确地以数字形式绘制。我的目标是添加第二个数字geom_line(即CUR_MTH_EARN_REV_EUR)。以下是代码:

library("ggthemes")
library("gridExtra")
library("grid")

p = ggplot(f, aes(DTE_OF_REPORT_EUR, CUR_MTH_UNEARN_REV_EUR, label=(CUR_MTH_UNEARN_REV_EUR)))
+ geom_point(size=ifelse(f$CUR_MTH_UNEARN_REV_EUR<8.0, 11, 5), color=ifelse(f$CUR_MTH_UNEARN_REV_EUR<8.0, '#CC0000', 'black')) 
+ geom_line(size=2,aes(group=1)) + geom_rangeframe() + theme_wsj() 
+ theme(axis.text.x=element_text(angle=50, size=20, vjust=0.7)) 
+ geom_smooth(aes(group=1), method="loess", colour = "#CC0000", lwd=2) 
+ geom_text(aes(label=CUR_MTH_UNEARN_REV_EUR), hjust=-0.5, vjust=0.5, fontface="bold") 
+ ggtitle("Unearned Revenue by Service Code 'BS', in CSG Months, Jul. 2014-Aug. 2015") 
+ theme(plot.title = element_text(lineheight=.8, face="bold"))

p

Text1 = textGrob("Source: Revenue Assurance and Quality Control", gp=gpar(fontsize=7))
p2 = p + annotation_custom(grob = Text1, ymin = -0.2, ymax = -30)

p2

format(round(f$CUR_MTH_UNEARN_REV_EUR, 2), nsmall = 2)
f$ScoreRounded <- round(f$CUR_MTH_UNEARN_REV_EUR, 1)
f$DTE_OF_REPORT_EUR <- factor(f$DTE_OF_REPORT_EUR, levels=unique(as.character(f$DTE_OF_REPORT_EUR)))

你尝试了什么?为什么它没有起作用?你可以添加第二个geom_line,或者你可以转换你的数据并按线变量分组。 - Heroka
我尝试添加第二个 geom_line/geom_smooth,但没有成功。我不确定我的语法是否不正确,还是这段代码不支持这种操作。 - Chris Rucker
你能展示一下代码吗?因为现在只有一个geom_line和一个geom_smooth。 - Heroka
我刚刚笨拙地将CUR_MTH_EARN_REV_EUR添加到geom_line和geom_smooth中。以下是数据集的示例:CUR_MTH_UNEARN_REV_EUR CUR_MTH_EARN_REV_EUR DTE_OF_REPORT_EUR 8.320038905 8.743871644 07.21.2014 - Chris Rucker
我认为你的代码和 ggplot 中的操作存在很多问题。我会发布一个带有示例数据的解决方案。 - Heroka
1个回答

6
希望这能作为一个开始的帮助。你可以添加内容,但需要正确的AES。
#data with x and two y-variables
set.seed(123)
f <- data.frame(x=1:10, var1=sample(7:10,10,T),
                var2=sample(5:7,10,T))

#as you want sizing by a measure, make a flag
f$var1_threshold <- f$var1 <9

#example with adding different geoms
#not that it's unnecessary to use my data (f)
#in the call to aes, as everything I need is already 
#inside f
p <- ggplot(f, aes(x=x)) +
  geom_point(aes(y=var1,size=var1_threshold, color=var1_threshold))+
  #colors and size in aes allows for legend generation.
  scale_size_manual(values=c("FALSE"=5,"TRUE"=8)) +
  scale_color_manual(values=c("FALSE"='#CC0000',"TRUE"='black')) +
  geom_line(aes(y=var1),size=1) +
  geom_line(aes(y=var2),size=1) +
  geom_smooth(aes(y=var1), colour="#CC0000") +
  geom_smooth(aes(y=var2), colour="black")

谢谢 - 我会仔细看一下。 - Chris Rucker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接