我正在尝试创建一个叠加的条形图,比较Cons和Labor在选举中赢得的座位(很有趣,我知道。)我是R Studio的初学者,到目前为止,这是完美的,除了....
library(ggplot2)
library(reshape2)
elections <- data.frame(Country = c("England", "NI", "Scotland", "Wales"),
Con = c(291, 0, 13, 8), Lab = c(200, 0, 7, 28))
elections_long <- melt(elections, id = "Country")
ggplot(elections_long, aes(x = Country, y = value)) +
geom_bar(stat="identity", aes(fill = variable)) +
ggtitle("Seats Won By Labour and Conservative In the United Kingdom") +
labs(y= "Amount of Seats Won", x = "Country") +
scale_fill_manual(values = c("#53a0ed", "#f71d1d")) +
labs(fill = "Party")
它产生了这个 - https://i.stack.imgur.com/WZORA.png
这与我想要的非常接近,但是R Studio正在为工党增加任何价值,并将其与保守党分开。
我的代码中是否有任何明显的遗漏导致这种情况发生?或者,我是否可以写一些内容来阻止保守党数据吸收劳工数据?
此外 - 如果有人知道一种方法可以翻转最后一根酒吧,以便保守党在工党的“前面”(工党在我的数据中占据了更多席位 - 而保守党则坐在工党之上并且更高 - 理想情况下我想要蓝色的条形图很小,而红色的条形图则在“背后”竖起来了。)
谢谢!
更新 - 如果我将Conserv的第一批数据的数量更改为“91”。它将它绘制在我想要的位置(在291处) - 不知道这是一个常见的事情,或者是什么,但也许这些信息有帮助!
答案 0 :(得分:0)
geom_bar
的默认行为是将群组叠加在一起(请参阅here),但听起来您不想要堆叠的条形图 - 它只是看起来像“工党”的值是“保守党”栏的一部分,因为这些栏堆叠在一起。它是在堆积条形图中计算的条形的相对高度(不是绝对高度)。
如果您使用position=position_dodge()
,则会将不同方绘制在一起。
library(ggplot2)
library(reshape2)
elections <- data.frame(Country = c("England", "NI", "Scotland", "Wales"),
Con = c(291, 0, 13, 8), Lab = c(200, 0, 7, 28))
elections_long <- melt(elections, id = "Country")
names(elections_long) <- c("Country", "Party", "Votes")
ggplot(elections_long, aes(x = Country, y = Votes, fill = Party)) +
geom_bar(stat="identity", position = position_dodge()) +
ggtitle("Seats Won By Labour and Conservative In the United Kingdom") +
labs(y= "Amount of Seats Won", x = "Country") +
scale_fill_manual(values = c("#53a0ed", "#f71d1d")) +
labs(fill = "Party")