0

我正在尝试创建一个条形图,它在 x 轴上具有相同的变量,但按年份分隔。我想显示随时间的增加/减少,但我不确定如何将每个数据集插入图表并标记年份。每个数据集都是特定年份的选举结果。

例如,这里有一个数据集:

1992Election
政党 18-29,30-44,45-59,60+(编号标题为年龄组)
民主党 0.40,0.37,0.40, 0.47(投票百分比)
共和党 0.35,0.41,0.42, 0.47

对于第一个数据集,我有以下代码来创建一个条形图:

1992年选举

colnames(`1992Election`)[colnames(`1992Election`)=="X.18.29."] <- "18-29"
colnames(`1992Election`)[colnames(`1992Election`)=="X.30.44."] <- "30-44"
colnames(`1992Election`)[colnames(`1992Election`)=="X.45.59."] <- "45-59"
colnames(`1992Election`)[colnames(`1992Election`)=="X.60.."] <- "60+"

Party92 = rownames(`1992Election`)
n.group92 = nrow(`1992Election`)

color.names92 = c("royalblue2", "red2")

barplot(as.matrix(`1992Election`),beside = TRUE, xlab = "Age Group", 
        ylab = "Percent Voted", ylim = c(0,.7), col = color.names92)  
title(main = "Presidential Election Votes by Age in Ohio\n Year 1992")
legend("topright", title = "Political Party", Party92, fill = color.names92, 
  cex = 0.4)

这导致了这个图表:1992Electiongraph

我希望沿 x 轴具有相同的变量,但按年份分组

例如:X 轴 [年龄组 (1992)、[同年龄组 (1996) 等] 如果有意义,谢谢。

4

2 回答 2

0

如果 2 个数据集相似,最简单的方法是将 2 个数据集绑定在一起。使用 rbind,您可以将年龄组放在一起。

barplot(as.matrix(rbind(El92, El96)), beside=TRUE)

或者使用 cbind 你得到 8 组 2 条,如果你想改变顺序,你可以指定:

barplot(as.matrix(cbind(El92, El96)[c(1,5,2,6,3,7,4,8)]), beside=TRUE)
于 2018-12-10T18:34:04.053 回答
0

根据您的数据的外观和结构,这里有一个使用 R 基础图形的简单解决方案:

假设您的数据的结构大致如下 df,其中一列是举行选举的年份,一列是两党的结果:

y <- c(10, 14, 18, 22, 26) 
df <- data.frame(
  Year = c(paste("20",y, sep = "")),
  Rep = c(rnorm(5, 10)),
  Dem = c(rnorm(5, 15))
)

然后您可以将选举结果保存在一个向量中,并使用它们转置t它们cbind

election.results <- t(cbind(df$Rep, df$Dem))

现在您可以在条形图election.results中绘制图表,使用beside参数和df$Year名称names.arg加上使用legend提供键:

barplot(election.results, beside=T, names.arg = df$Year, col=c("red","blue"))
par(xpd=T) # this will probably not be necessary with the real data
legend(19, c("Republicans", "Democrats"), horiz = T, col=c("red","blue"), fill=c("red","blue"))

在此处输入图像描述

于 2018-12-10T18:39:49.733 回答