R-ggplot2 geom_区域是否只有一个类别可见?
新来的R,新来的stackoverflow,所以请原谅我 我正在尝试使用ggplot2在R中绘制时间序列图。我想展示两个线图,它们填充在给定日期的值之下。我一直在尝试使用geom_区域(position=“identity”)函数来实现这一点 但是,只有一种颜色显示在我的图表上(尽管两种颜色都显示在图例中)。我开始使用melt()融化数据,现在使用三列(X=时间,变量=地下水井,值=地下水位)。下面是我的代码的简化版本,以及我得到的截图R-ggplot2 geom_区域是否只有一个类别可见?,r,plot,ggplot2,R,Plot,Ggplot2,新来的R,新来的stackoverflow,所以请原谅我 我正在尝试使用ggplot2在R中绘制时间序列图。我想展示两个线图,它们填充在给定日期的值之下。我一直在尝试使用geom_区域(position=“identity”)函数来实现这一点 但是,只有一种颜色显示在我的图表上(尽管两种颜色都显示在图例中)。我开始使用melt()融化数据,现在使用三列(X=时间,变量=地下水井,值=地下水位)。下面是我的代码的简化版本,以及我得到的截图 Bank01MWtest<-data.frame(X
Bank01MWtest<-data.frame(X=(c(1,2,2,1)),variable=(c("MW-01A","MW-01A","MW-01B","MW-01B")),value=(c(576,571,584,580)))
ggplot(data=Bank01MWtest, aes(x=X, y=value,group=variable))+geom_area(position="identity", aes(fill=variable))+geom_line(aes(color=variable))+coord_cartesian(ylim=c(570,590))
Bank01MWtest我相信geom_区域
正在被ggplot2
中的geom_功能区
所取代,因此我将在解决方案中使用后者。对于此解决方案,您还需要从长到宽重新构造数据,为每个图例类别提供自己的列。我将使用reformae2
包中的dcast
函数来实现这一点
这里的想法是使用不同的ymax
变量添加图层,使用fill
选项分配图例标签,然后使用scale\u fill\u manual
功能添加带有颜色的图例
library(ggplot2)
library(reshape2)
Bank01MWtest<-data.frame(X=sample(c(1,1,2,2)),
variable=sample(c("MW01A","MW01A","MW01B","MW01B")),
value=sample(c(576,571,584,580)))
### Note above I modified your category labels by getting rid of the "-" sign
### so that they can be used as variable names below.
dat = dcast(Bank01MWtest, X~variable)
ggplot(data=dat, aes(x=X)) +
geom_ribbon(aes(ymin=0, ymax=MW01A, fill="MW01A")) +
geom_ribbon(aes(ymin=0, ymax=MW01B, fill="MW01B")) +
scale_fill_manual("", values=c("green", "blue")) +
coord_cartesian(ylim=c(570,590))
库(ggplot2)
图书馆(E2)
Bank01MWtest在geom_区域尝试此方法,使用一些合成生成的Bank01MWtest数据集:
head(Bank01MWtest)
Time variable value
1 2016-07-01 MW-01A 582.5482
2 2016-07-02 MW-01A 580.5652
3 2016-07-03 MW-01A 582.3305
4 2016-07-04 MW-01A 583.3122
5 2016-07-05 MW-01A 576.3432
6 2016-07-06 MW-01A 584.4086
tail(Bank01MWtest)
Time variable value
195 2016-10-03 MW-01B 573.8355
196 2016-10-04 MW-01B 575.3218
197 2016-10-05 MW-01B 570.8007
198 2016-10-06 MW-01B 572.3415
199 2016-10-07 MW-01B 575.3291
200 2016-10-08 MW-01B 578.0055
ggplot(data=Bank01MWtest, aes(x=Time, y=value,group=variable))+
geom_area(position='identity', aes(fill=variable), alpha=0.2)+
scale_x_date(date_breaks= "1 month", date_minor_breaks = "15 days", date_labels = "%b",
limits = c(min(Bank01MWtest$Time),max(Bank01MWtest$Time))) +
geom_line(aes(color=variable))+coord_cartesian(ylim=c(570,590))
您应该提供最简单的示例输入数据,以便更清楚地了解发生了什么。如果我们可以将代码复制/粘贴到R中进行测试,这将更容易帮助您。您有两种颜色,但当您将一种透明颜色置于另一种透明颜色之上时,它们将组合成不同的颜色。移除alpha以查看。如果需要查看这两个组,可以使用fill=rev(variable)
反转首先绘制的变量。对不起。我更新了操作。一个新的图像也被更新。这是完美的,谢谢。我一直非常专注于使用geom_区域获得绘图,我甚至没有考虑将数据转换回geom_功能区。仍然不知道为什么geom_区域不能工作,但它会继续让我发疯!即使我反转变量(如上所述),颜色也会切换,但您仍然无法同时看到这两个集合。