R中的条形图比较两列数据

时间:2016-01-08 15:02:47

标签: r

我有以下内容:

> ArkHouse2014 <-  read.csv(file="C:/Rwork/ar14.csv", header=TRUE, sep=",")
> ArkHouse2014
DISTRICT   GOP   DEM
1     AR-60 3,951 4,001
2     AR-61 3,899 4,634
3     AR-62 5,130 4,319
4    AR-100 6,550 3,850
5     AR-52 5,425 3,019
6     AR-10 3,638 5,009
7     AR-32 6,980 5,349

我想做的是制作一个条形图(或一系列条形图)来比较y轴上第二和第三列中的总数,而x轴将在第一列中显示信息。

看起来这应该很容易做到,但是我能找到的关于制作条形图的大部分信息都是你从数据中制作一个表,然后是条形图,例如,

> table(ArkHouse2014$GOP)

2,936 3,258 3,508 3,573 3,581 3,588 3,638 3,830 3,899 3,951 4,133 4,166 4,319 4,330 4,345 4,391 4,396 4,588 
    1     1     1     1     1     1     1     1     1     1     1     1        1     1     1     1     1     1 
4,969 5,130 5,177 5,343 5,425 5,466 5,710 5,991 6,070 6,100 6,234 6,490 6,550 6,980 7,847 8,846 
1     1     1     1     1     1     1     1     1     1     1     1     1     1     1     1 

我不想要计算每个总数的数量,我想直观地表示数量。我觉得非常愚蠢无法解决这个问题,所以提前感谢您提供给我的任何建议。

1 个答案:

答案 0 :(得分:1)

以下是使用库reshape2ggplot2的选项:

我首先阅读您的数据(使用dec = ","):

df <- read.table(header=TRUE, text="DISTRICT   GOP   DEM
                 1     AR-60 3,951 4,001
                 2     AR-61 3,899 4,634
                 3     AR-62 5,130 4,319
                 4    AR-100 6,550 3,850
                 5     AR-52 5,425 3,019
                 6     AR-10 3,638 5,009
                 7     AR-32 6,980 5,349", dec = ",")

然后将其重新整理为长格式:

library(reshape2)
df_long <- melt(df, id.var = "DISTRICT")

然后使用ggplot

创建一个条形图
library(ggplot2)
ggplot(df_long, aes(x = DISTRICT, y = value, fill = variable)) + 
  geom_bar(stat = "identity", position = "dodge") 

pic

或者如果你想要堆积条形码:

ggplot(df_long, aes(x = DISTRICT, y = value, fill = variable)) + 
  geom_bar(stat = "identity")