如何将 y 轴从计数更改为道具?

How to change y axis from count to prop?

我用 ggplot2GGally 创建了这个条形图,比例为:



ggplot(mtcars, aes(x = factor(cyl),  by = 1)) +
  geom_bar(fill = "steelblue", stat = "prop") +
  geom_text(aes(label = scales::percent(after_stat(prop), accuracy = 1)), stat = "prop", nudge_y = 0.5) +
  theme_minimal() +
  theme(aspect.ratio = 1.5)

但是,在 y 轴上,我想更改它以反映条形图上的百分比。我想避免像 ylim = "40" 这样的硬编码值,而是让它使用图表中的值。

试试这个:

ggplot(mtcars, aes(x = cyl)) + 
  geom_bar(aes(y = ..prop..), fill = "steelblue", stat = "count") +
  geom_text(aes(label = scales::percent(..prop..), y = ..prop.. ), stat= "count", vjust = -.5) + 
  ylim(0, 0.5) + 
  ylab("") +
  theme_minimal() + 
  theme(aspect.ratio = 1.5)

编辑:如果你想要 x 轴上的因子,请尝试

ggplot(mtcars, aes(x = factor(cyl))) + 
  geom_bar(aes(y = (..count..)/sum(..count..)), fill = "steelblue", stat = "count") +
  geom_text(aes(label = scales::percent(round((..count..)/sum(..count..), 2)),
                y = ((..count..)/sum(..count..))), stat = "count", vjust = -.25) + 
  ylim(0, 0.5) + 
  ylab("") +
  theme_minimal() + 
  theme(aspect.ratio = 1.5)

Edit2:使用 GGally 包你可以使用:

ggplot(mtcars, aes(x = factor(cyl), by = 1)) +
  geom_bar(aes(y = ..prop..), fill = "steelblue", stat = "prop") +
  geom_text(aes(label = scales::percent(..prop..), y = ..prop.. ), stat = "prop", vjust = -.5) + 
  ylim(0, 0.5) + 
  ylab("") +
  theme_minimal() + 
  theme(aspect.ratio = 1.5)