相关疑难解决方法(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万
查看次数

每个方面的总和百分比 - 尊重"填充"

我正在尝试创建一个刻面的条形图,每个方面的百分比加起来为100.这个问题的解决似乎是一个组合group..density...然而 - 在我看来,这group与之相矛盾fill.

数据:

test <- data.frame(
     test1 = sample(letters[1:2], 100, replace = TRUE), 
     test2 = sample(letters[3:8], 100, replace = TRUE)
 )
Run Code Online (Sandbox Code Playgroud)

这使得百分比正确:

ggplot(test, aes(test2)) +
     geom_bar(aes(y = ..density.., fill=test2,group=test1)) + 
     facet_grid(~test1)
Run Code Online (Sandbox Code Playgroud)

您可以看到的总线fill被覆盖: 每个方面的百分比总和为100

但是,下面的代码尊重fill但给我错误的百分比(整个图表的总和为100)(使用..density ..):

ggplot(test, aes(test2)) +
     geom_bar(aes(y = ..count../sum(..count..), fill=test2)) + 
     facet_grid(~test1)
Run Code Online (Sandbox Code Playgroud)

总图表的百分比总和为100

相关:我的这个老问题:在一个刻面的ggplot条形图中y实验室的百分比?.

是的 - 我可以创建其他数据,但我觉得这属于表示层.实际上这感觉就像一个bug?

r ggplot2

14
推荐指数
1
解决办法
5138
查看次数

在ggplot2中分别标准化分面直方图

我的问题类似于将 R ggplot中的直方图中的y轴标准化为比例, 但我想稍微添加一下.

一般来说,我在2x3小平面设计中有6个直方图,我想分别对它们进行标准化.我将尝试在此处创建一个示例数据集以提供一个想法:

hvalues=c(3,1,3,2,2,5,1,1,12,1,4,3)
season=c("fall","fall","fall","fall","winter","winter","winter","winter","summer","summer","summer","summer")
year=c("year 1","year 1","year 2","year 2","year 1","year 1","year 2","year 2","year 1","year 1","year 2","year 2")
group=c("fall year 1","fall year 1","fall year 2","fall year 2","winter year 1","winter year 1","winter year 2","winter year 2","summer year 1","summer year 1","summer year 2","summer year 2")
all=data.frame(hvalues,season,year)
Run Code Online (Sandbox Code Playgroud)

运用

ggplot(all, aes(x=hvalues,group=group)) + 
geom_histogram(aes(y=..count../sum(..count..))) + 
facet_grid(season ~ year)
Run Code Online (Sandbox Code Playgroud)

给出整体比例(即组合所有方面).我希望每个组的方面都被标准化为1.在我的实际数据中,hvalues不是整数 - 它们是数字的.

我是一个使用R的新手,非常感谢一些帮助.提前致谢!

r normalization histogram facet ggplot2

11
推荐指数
1
解决办法
3586
查看次数

R:带有百分比标签的多面条形图,每个图都独立

我正在尝试使用facet_grid来生成几个图,其中每个图的百分比标签增加到100%.

在提供的图像中,百分比标签增加到49%(第一刻面)和51%(第二刻面).

我已经看到这个问题,解决方案是聚合ggplot之外的数据.我宁愿不这样做,我相信这是一个更好的方法.

library("ggplot2")
library("scales")

set.seed(123)

df <- data.frame(x = rnorm(10000, mean = 100, sd = 50))

df$factor_variable <- cut(df$x, right = TRUE, 
                          breaks = c(0, 25, 50, 100, 200, 10000),
                          labels = c("0 - 25", "26 - 50", "51 - 100", "101 - 200", "> 200")
                          )

df$second_factor_variable <- ifelse(df$x < 100, 1, 2)

df <- sample(df, x > 0)

table(df$second_factor_variable)

p1 <- ggplot(df, aes(x = factor_variable, y = (..count..)/sum(..count..), ymax = 0.8))
p1 <- p1 + …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

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

标签 统计

ggplot2 ×4

r ×4

facet ×1

histogram ×1

normalization ×1