我有以下内容:
> 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
我不想要计算每个总数的数量,我想直观地表示数量。我觉得非常愚蠢无法解决这个问题,所以提前感谢您提供给我的任何建议。
答案 0 :(得分:1)
以下是使用库reshape2
和ggplot2
的选项:
我首先阅读您的数据(使用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")
或者如果你想要堆积条形码:
ggplot(df_long, aes(x = DISTRICT, y = value, fill = variable)) +
geom_bar(stat = "identity")