绘制条形图以使用ggplot2包比较两组数据?

时间:2014-01-25 10:25:23

标签: r ggplot2 bar-chart

构建条形图以比较两组数据的最佳方法是什么?

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值

1 个答案:

答案 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)

给出了以下条形图:

enter image description here