相关疑难解决方法(0)

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

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

我正在寻找一种方法来ggplot显示该类别中的值的百分比.当然,有可能用计算的百分比创建另一个变量并绘制一个变量,但我必须做几十次,我希望在一个命令中实现它.

我正在尝试类似的东西

qplot(mydataf) +
  stat_bin(aes(n = nrow(mydataf), y = ..count../n)) +
  scale_y_continuous(formatter = "percent")
Run Code Online (Sandbox Code Playgroud)

但我必须错误地使用它,因为我有错误.

为了轻松重现设置,这里有一个简化的例子:

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.
Run Code Online (Sandbox Code Playgroud)

在实际情况中,我可能会使用ggplot而不是qplot,但使用stat_bin的正确方法仍然无法使用.

我也试过这四种方法:

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 = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

160
推荐指数
9
解决办法
20万
查看次数

ggplot2 - 具有组内比例而非频率的多组直方图

我有三个ExperimentCohort因素确定的学生群体.对于每个学生,我有一个LetterGrade,也是一个因素.我想LetterGrade为每个人绘制一个类似直方图的条形图ExperimentCohort.运用

ggplot(df, alpha = 0.2, 
       aes(x = LetterGrade, group = ExperimentCohort, fill = ExperimentCohort))                                                                                                                                                       
  + geom_bar(position = "dodge")
Run Code Online (Sandbox Code Playgroud)

让我非常接近,但这三个ExperimentCohorts学生的数量并不相同.为了在更均匀的场上比较这些,我希望y轴是每个字母等级的队列中的比例.到目前为止,还没有计算这个比例,并在绘图之前将其放在一个单独的数据框中,我还没有找到办法做到这一点.

SO和其他地方的类似问题的每个解决方案都涉及aes(y = ..count../sum(..count..)),但sum(.. count ..)在整个数据帧中执行,而不是在每个队列中执行.有人有建议吗?这是创建示例数据帧的代码:

df <- data.frame(ID = 1:60, 
        LetterGrade = sample(c("A", "B", "C", "D", "E", "F"), 60, replace = T),
        ExperimentCohort = sample(c("One", "Two", "Three"), 60, replace = T))
Run Code Online (Sandbox Code Playgroud)

谢谢.

r ggplot2

19
推荐指数
2
解决办法
4万
查看次数

ggplot图表显示类别内观察的比例

我正在寻找有关更好地绘制各类观测比例的建议.

我有一个看起来像这样的数据框:

cat1 <- c("high", "low", "high", "high", "high", "low", "low", "low", "high", "low", "low")
cat2 <- c("1-young", "3-old", "2-middle-aged", "3-old", "2-middle-aged", "2-middle-aged", "1-young", "1-young", "3-old", "3-old", "1-young")
df <- as.data.frame(cbind(cat1, cat2))
Run Code Online (Sandbox Code Playgroud)

在这里的例子,我要绘制的比例各年龄组的有值"高",而且比例各年龄组的有值"低".更一般地说,我想为类别2的每个值绘制属于第1类每个级别的观察百分比.

以下代码生成正确的结果,但只能通过在绘图之前手动计数和分割.有什么好的方法可以在ggplot中动态执行此操作吗?

library(plyr)
count1 <- count(df, vars=c("cat1", "cat2"))
count2 <- count(df, "cat2")

count1$totals <- count2$freq
count1$pct <- count1$freq / count1$totals

ggplot(data = count1, aes(x=cat2, y=pct))+
facet_wrap(~cat1)+
geom_bar()
Run Code Online (Sandbox Code Playgroud)

这个以前的stackoverflow问题提供了类似的东西,代码如下:

ggplot(mydataf, aes(x = foo)) + 
geom_bar(aes(y = (..count..)/sum(..count..)))
Run Code Online (Sandbox Code Playgroud)

但我不想要"总和(......计数......)" - 它给出了所有箱子的总和- …

r ggplot2

13
推荐指数
2
解决办法
3万
查看次数

如何在ggplot2中使用填充美学来绘制两组的相对比例?

如何在ggplot2中使用填充美学来绘制两组的相对比例?

我在这里问这个问题,因为关于这个主题的其他几个答案似乎不正确(ex1,ex2ex3),但是Cross Validated似乎在功能上禁止了R特定问题(CV meta). ..density..在概念上与比例相关,但与比例不同(ex4ex5).所以正确答案似乎不涉及密度.

例:

set.seed(1200)
test <- data.frame(
  test1 = factor(sample(letters[1:2], 100, replace = TRUE,prob=c(.25,.75)),ordered=TRUE,levels=letters[1:2]), 
  test2 = factor(sample(letters[3:8], 100, replace = TRUE),ordered=TRUE,levels=letters[3:8])
)
ggplot(test, aes(test2)) + geom_bar(aes(y = ..density.., group=test1, fill=test1) ,position="dodge")
#For example, the plotted data shows level a x c as being slightly in excess of .15, but a manual calculation shows a value of .138
counts <- with(test,table(test1,test2))
counts/matrix(rowSums(counts),nrow=2,ncol=6)
Run Code Online (Sandbox Code Playgroud)

似乎产生正确输出的答案适用于不使用ggplot2(在ggplot2之外计算它)的解决方案,或者需要使用面板而不是填充美学. …

statistics visualization r data-visualization ggplot2

5
推荐指数
1
解决办法
2642
查看次数