我已经运行了这个R脚本很长一段时间它总是工作得很好但是今天我把它加载到一台新的同事计算机上并注意到我的图表以不同的方式出现。在预感中,我在我的机器上重新安装了ggplot2,现在我的情节与我的同事一样。
该脚本采用如下所示的数据集:
Var1 Var2 value Var3
1 A Total -20.3681969 Total
2 B Total -7.8687517 Total
3 C Total -5.5482684 Total
4 D Total -5.380664 Total
5 E Total -1.6060702 Total
6 F Total -1.5844055 Total
7 G Total -1.571284 Total
8 H Total -0.2576642 Total
9 I Total -0.2448856 Total
10 J Total -0.2114562 Total
11 K Total -26.2567781 Total
12 L Total -18.3848686 Total
13 A Ghost 0 Ghost
14 B Ghost -20.3681969 Ghost
15 C Ghost -28.2369485 Ghost
16 D Ghost -33.7852169 Ghost
17 E Ghost -39.1658809 Ghost
18 F Ghost -40.7719511 Ghost
19 G Ghost -42.3563566 Ghost
20 H Ghost -43.9276406 Ghost
21 I Ghost -44.1853049 Ghost
22 J Ghost -44.4301904 Ghost
23 K Ghost -18.3848686 Ghost
24 L Ghost 0 Ghost
并创建堆积条形图:
ggplot(data=myData, aes(x=Var1, y=value, fill=Var3, order=-as.numeric(Var2))) + geom_bar(stat="identity")+
theme_bw() + theme(panel.border = element_blank(), panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line = element_line(colour = "black")) +
labs(x="", y="") +
scale_y_continuous(labels=format_si()) +
ggtitle("myData") +
guides(fill=FALSE) +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
我的问题是,在重新安装ggplot2之前,绿色条出现在顶部(在x轴和紫色条之间)。我假设新的处理方法与我上面引用的警告有关(虽然我之前也收到了这个消息)。有没有办法告诉ggplot2如何处理负值,因为所有输出都是负数?有没有办法明确地将绿色条放在x轴上?我试图在调用ggplot2时弄乱订单操作符,但无法使其工作。谢谢你的帮助!
答案 0 :(得分:2)
正如约兰在评论中指出的那样,ggplot2> = 2.0.0不再支持order
美学。此外,堆叠条的顺序不再由因子水平的顺序确定。您需要做的是按照您希望订购条形图的方式订购数据行。
在您的情况下,这相对简单,因为您可以按字母顺序排序:
myData <- dplyr::arrange(myData, Var3, Var1)
但是,通常,字母顺序可能不是您想要的。但你可以改用有序因子。这些允许您定制订单:
myData$Var3 <- ordered(myData$Var3, levels = c("Ghost", "Total"))
myData <- dplyr::arrange(myData, Var3, Var1)
head(myData)
## Var1 Var2 value Var3
## 1 A Ghost 0.00000 Ghost
## 2 B Ghost -20.36820 Ghost
## 3 C Ghost -28.23695 Ghost
## 4 D Ghost -33.78522 Ghost
## 5 E Ghost -39.16588 Ghost
## 6 F Ghost -40.77195 Ghost
如您所见,"Ghost"
中Var3
的行现在排在第一位。
现在情节按照您要求的方式订购了酒吧:
ggplot(data=myData, aes(x=Var1, y=value, fill=Var3)) +
geom_bar(stat = "identity")
警告消息不会消失,并且条形图的排序似乎与它没有关联。如果您的数据中只有正数值,它就会消失:尝试如上绘图,但使用y=-value
。因此,如果您绘制负长度的条形图,似乎会出现警告。但我不能说我理解,为什么会这样。
答案 1 :(得分:0)
myData$Var2 <- factor(myData$Var2, levels = rev(levels(myData$Var2)))
这应该有所帮助。此外,您应该更改ggplot中的顺序= as.numeric()
。