在分类变量的图表中显示%而不是计数

在分类变量的图表中显示%而不是计数

我正在绘制一个分类变量,而不是显示每个类别值的计数。

我在找方法ggplot若要显示该类别中值的百分比,请执行以下操作。当然,用计算出的百分比和绘图来创建另一个变量是可能的,但是我必须做几十次,我希望能在一个命令中实现这一点。

我在做这样的实验

qplot(mydataf) +
  stat_bin(aes(n = nrow(mydataf), y = ..count../n)) +
  scale_y_continuous(formatter = "percent")

但我一定是不正确地使用它,因为我有错误。

为了方便地再现设置,下面是一个简化的示例:

mydata <- c ("aa", "bb", NULL, "bb", "cc", "aa", "aa", "aa", "ee", NULL, "cc");mydataf <- factor(mydata);qplot (mydataf); #this shows the count, I'm looking to see % displayed.

在实际情况下,我可能会用ggplot而不是qplot,但是正确的使用方式统计箱我还是逃避不了。

我也尝试过以下四种方法:

ggplot(mydataf, aes(y = (..count..)/sum(..count..))) + 
  scale_y_continuous(formatter = 'percent');ggplot(mydataf, aes(y = (..count..)/sum(..count..))) + 
  scale_y_continuous(formatter = 'percent') + geom_bar();ggplot(mydataf, aes(x = levels(mydataf), y = (..count..)/sum(..count..))) + 
  scale_y_continuous(formatter = 'percent');ggplot(mydataf, aes(x = levels(mydataf), y = (..count..)/sum(..count..))) + 
  scale_y_continuous(formatter = 'percent') + geom_bar();

但所有4项都给予:

Error: ggplot2 doesn't know how to deal with data of class factor

简单的情况下,也会出现相同的错误。

ggplot (data=mydataf, aes(levels(mydataf))) +
  geom_bar()

所以很明显是关于ggplot与单个向量相互作用。我在抓我的头,在谷歌上搜索那个错误给了我一个结果.


DIEA
浏览 721回答 3
3回答

MM们

自回答后,对ggplot语法。总结上述评论中的讨论:&nbsp;require(ggplot2) &nbsp;require(scales) &nbsp;p&nbsp;<-&nbsp;ggplot(mydataf,&nbsp;aes(x&nbsp;=&nbsp;foo))&nbsp;+&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;geom_bar(aes(y&nbsp;=&nbsp;(..count..)/sum(..count..)))&nbsp;+&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;##&nbsp;version&nbsp;3.0.0 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scale_y_continuous(labels=percent)下面是一个可复制的示例mtcars:&nbsp;ggplot(mtcars,&nbsp;aes(x&nbsp;=&nbsp;factor(hp)))&nbsp;+&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;geom_bar(aes(y&nbsp;=&nbsp;(..count..)/sum(..count..)))&nbsp;+&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scale_y_continuous(labels&nbsp;=&nbsp;percent)&nbsp;##&nbsp;version&nbsp;3.0.0这个问题目前是谷歌最热门的“gggketcount vs.persion直方图”,因此希望这有助于提取当前包含在已接受答案的评论中的所有信息。备注:如果hp不设置为一个因素,ggart返回:

蝴蝶刀刀

这个修改后的代码应该可以工作。p&nbsp;=&nbsp;ggplot(mydataf,&nbsp;aes(x&nbsp;=&nbsp;foo))&nbsp;+&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;geom_bar(aes(y&nbsp;=&nbsp;(..count..)/sum(..count..)))&nbsp;+&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;scale_y_continuous(formatter&nbsp;=&nbsp;'percent')如果您的数据具有nas,并且不希望它们包含在绘图中,则将na.omit(Mydataf)作为参数传递给ggart。希望这能帮上忙。

jeck猫

对于ggplot 2版本2.1.0,它是+&nbsp;scale_y_continuous(labels&nbsp;=&nbsp;scales::percent)
打开App,查看更多内容
随时随地看视频慕课网APP