在ggplot中使用facet wrap遇到了问题

3

我在使用ggplot设置facet wrap时遇到了一些困难,其中有三个变量,其中两个是点,第三个是线条。应该会有12个图(每个月一个图),x轴为位置,y轴为数量。这三个变量分别是OSM、DRP和Demand。以下是示例数据(实际数据包括每个月30个位置的12个月)。由于我不知道如何在Stack Overflow中添加Excel数据,所以我将其作为代码添加。

到目前为止,我生成的代码如下,但它不起作用。我也无法弄清楚如何将这三个变量放入图例中。感谢任何帮助。

library(ggplot2)
parts$Location<-as.factor(parts$Location)
parts$OSM<-as.factor(parts$OSM)
parts$DRP<-as.factor(parts$DRP)
parts$Demand<-as.factor(parts$Demand)
parts$Month<-as.factor(parts$Month)
data=data.frame(parts$Location,parts$Month,parts$OSM,parts$DRP,parts$Demand)

# Faceting
ggplot(data)+geom_point(stat = "identity", aes(y=parts$OSMparts, x=parts$Location,pch=4,col="red" )) + 
  geom_point(stat = "identity", aes(y=parts$DRPparts, x=parts$Location,pch=16,col="blue" ))+
  geom_line(stat = "identity", aes(y=parts$Demandparts, x=parts$Location,col="green" ))
  facet_wrap(~parts$Month)



Location    Month   OSM Demand  DRP
1   January 0   0   1
2   January 2   0   2
3   January 0   1   0
4   January 0   0   1
5   January 2   0   2
1   February    0   0   0
2   February    2   2   2
3   February    0   0   0
4   February    1   1   0
5   February    1   1   2
1   March   0   0   0
2   March   2   4   2
3   March   0   1   0
4   March   2   2   1
5   March   2   2   2
1   April   0   0   NA
2   April   2   2   NA
3   April   0   0   NA
4   April   1   1   NA
5   April   2   4   NA
1   May 0   0   NA
2   May 1   0   NA
3   May 0   0   NA
4   May 2   2   NA
5   May 2   0   NA
1   June    0   0   0
2   June    3   6   2
3   June    0   0   0
4   June    1   3   1
5   June    2   7   2
1   July    0   0   0
2   July    3   3   3
3   July    0   1   0
4   July    3   4   2
5   July    3   4   3
1   August  0   1   0
2   August  3   3   3
3   August  0   0   0
4   August  4   6   3
5   August  3   6   3
1   September   0   0   1
2   September   3   0   3
3   September   0   0   1
4   September   2   3   3
5   September   3   1   4
1   October 0   0   0
2   October 2   1   2
3   October 0   0   0
4   October 4   3   3
5   October 3   1   3
1   November    0   0   0
2   November    2   1   2
3   November    0   1   0
4   November    5   7   3
5   November    4   5   3
1   December    0   0   0
2   December    2   5   2
3   December    0   0   0
4   December    2   0   4
5   December    5   13  3

请将代码或数据作为文本发布,而不是作为图像(https://meta.stackoverflow.com/questions/285551/why-not-upload-images-of-code-on-so-when-asking-a-question/285557#285557)。另请参阅如何创建一个[优秀的可重现示例](https://dev59.com/eG025IYBdhLWcg3whGSx#5963610)。 - Anonymous coward
欢迎来到SO(我这么说是因为您发布了一张数据图片)。除非主题是图像处理,否则图片既不是代码也不是数据。请删除该图片,点击您的问题下方的“r”,然后点击“信息”,学习如何发布一个正确的问题。 - hrbrmstr
1个回答

2
解决方案比你试图让它变得简单得多。
ggplot(parts) +
  geom_point(aes(x=Location, y=OSM, col="blue"), pch=16)+
  geom_point(aes(x=Location, y=DRP, col="red"), pch=16)+
  geom_line(aes(x=Location, y=Demand, col="green"))+
  facet_wrap(~factor(Month, levels = month.name))+
  scale_colour_discrete(name  ="Label",
                        labels=c("DRP", "Demand","OSM"))

谢谢,但是我如何按正确的顺序获取月份? - Angus
抱歉,请在因子中添加 levels = month.name。请查看更新后的代码。 - Jared C

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