R:Plot有效,但ggplot没有

时间:2011-04-17 22:38:33

标签: r graphics ggplot2

我有一些来自2008年大选的数据,我已经汇总了这些数据,希望能够制作一些关于党外投票的图表。数据如下所示:

> voting
  voteObama voteMcCain      partyID totalvote outvotenumber outVoteProportion
1  325.5233    16.3212 1-Strong Dem  341.8445       16.3212        0.04774452
2  202.7162    32.6342   2-Weak Dem  235.3504       32.6342        0.13866218
3  201.8810    20.7225   3-Lean Dem  222.6035       20.7225        0.09309153
5   32.2052   143.3616   5-Lean Rep  175.5668       32.2052        0.18343559
6   26.6978   204.2876   6-Weak Rep  230.9854       26.6978        0.11558220
7    9.3775   245.7965 7-Strong Rep  255.1740        9.3775        0.03674943

我想使用ggplot2库,之前已经取得了成功。我希望以下命令能够给出我想要的图形:

> g <- ggplot(data=voting, aes(x=partyID, y=outVoteProportion))
> g + geom_line()

图形窗口显示,包含所有正确的标签和比例,但没有数据显示出来。如果我用ggplot绘制一些随机数据,它可以正常工作,如果我用绘图绘制这些数据:

> plot(as.factor(voting$partyID), voting$outVoteProportion)

它也可以正常工作。我不确定问题出在哪里。它是否在投票数据框架的结构中?或者我正在构建我的ggplot对象的方式?我希望这只是工作,但显然我错过了一些东西。

编辑根据要求输出dput(投票)

structure(list(voteObama = c(325.523299649358, 202.716199040413, 
201.880999490619, 32.2051995545626, 26.6977999508381, 9.37749981880189
), voteMcCain = c(16.3212000578642, 32.634199783206, 20.7224997878075, 
143.361599132419, 204.287599071860, 245.796498090029), partyID = c("1-Strong Dem", 
"2-Weak Dem", "3-Lean Dem", "5-Lean Rep", "6-Weak Rep", "7-Strong Rep"
), totalvote = c(341.844499707222, 235.350398823619, 222.603499278426, 
175.566798686981, 230.985399022698, 255.173997908831), outvotenumber = c(16.3212000578642, 
32.634199783206, 20.7224997878075, 32.2051995545626, 26.6977999508381, 
9.37749981880189), outVoteProportion = c(0.0477445156257969, 
0.138662181778002, 0.0930915275590001, 0.183435591441075, 0.115582197246219, 
0.0367494333108043)), .Names = c("voteObama", "voteMcCain", "partyID", 
"totalvote", "outvotenumber", "outVoteProportion"), row.names = c("1", 
"2", "3", "5", "6", "7"), class = "data.frame")

2 个答案:

答案 0 :(得分:3)

发表评论作为回答。阅读此FAQ以了解为什么'geom_line()`不生成行

答案 1 :(得分:2)

我可以重现您的问题,并使用ggplot2和geom_line()对离散因子进行其他尝试。如果你这样做,你将得到一个可以满足你需求的输出

g + geom_bar()

获得类似

的内容

geom_bar()