构建条形图以比较两组数据的最佳方法是什么?
e.g。数据集:
Number <- c(1,2,3,4)
Yresult <- c(1233,223,2223,4455)
Xresult <- c(1223,334,4421,0)
nyx <- data.frame(Number, Yresult, Xresult)
我想要的是横跨X的数字和彼此相邻的数字,表示单独的X和Y值
答案 0 :(得分:6)
最好将数据重新整形为长格式。你可以使用例如 reshape2 包的melt
函数(替代方案是基数为R的reshape
,来自 data.table <的melt
来实现。 / em>(这是 reshape2 的melt
函数的扩展实现)和来自 tidyr 的gather
。
使用您的数据集:
# load needed libraries
library(reshape2)
library(ggplot2)
# reshape your data into long format
nyxlong <- melt(nyx, id=c("Number"))
# make the plot
ggplot(nyxlong) +
geom_bar(aes(x = Number, y = value, fill = variable),
stat="identity", position = "dodge", width = 0.7) +
scale_fill_manual("Result\n", values = c("red","blue"),
labels = c(" Yresult", " Xresult")) +
labs(x="\nNumber",y="Result\n") +
theme_bw(base_size = 14)
给出了以下条形图: