ggplot中的小平面换行有问题

时间:2018-11-28 21:25:57

标签: r ggplot2 charts facet-wrap

在ggplot中设置带有3个变量的小平面换行有些困难,其中三个变量是点,第三个变量是一条线。应该有十二个地块(每个月一幅,这是分面包装),沿x的位置和沿y的数字的位置。这三个变量是OSM,DRP和需求。这是示例数据(实际数据由每月30个位置的12个月组成)。我将其添加为代码,因为我不知道如何将Excel数据添加到Stack Overflow。

到目前为止,我生成的代码如下,但它不起作用。我也想不通如何将三个变量添加到图例中。任何帮助将不胜感激。

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

1 个答案:

答案 0 :(得分: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"))