【问题标题】:R - Clustered bar chart with varying widths in ggplotR - ggplot中具有不同宽度的聚集条形图
【发布时间】:2018-09-05 05:05:06
【问题描述】:

我有一个包含子组的数据集,我想在条形图中显示 2 条数据(一条使用条形的高度,一条使用条形的宽度)。

我将其称为具有不同条形宽度的聚集条形图。

这是我目前所拥有的:

library(ggplot2)

df <- data.frame(Year = c('2010',rep('2011', 2), rep('2012', 3), rep('2013', 4)),
                 Subyear = c('2010','2010','2011','2010','2011','2012','2010','2011','2012','2013'),
                 Size = c(100, 50, 150, 25, 45, 140, 10, 25, 50, 200),
                 Pct = runif(10, 20, 150) / 100)

ggplot(df, aes(x = Year, y = Pct, fill = Subyear, width = Size/500)) +
geom_bar(stat = "identity", position = "dodge")

这是我得到的情节。它很接近,但我希望子年条显示为聚集条(而不是重叠)。

感谢您的帮助!

【问题讨论】:

  • “我希望子年条显示为聚集条” 是什么意思?你是说堆积条形图吗?
  • 我的意思是我希望它们并排。因此,对于 2011 年,我希望 2010 年和 2011 年条并排,2011 年条比另一个更宽。
  • 我明白了(我认为);请看下面我的回答。

标签: r ggplot2


【解决方案1】:

如果我理解正确,你可以使用position = "dodge2"

ggplot(df, aes(x = Year, y = Pct, fill = Subyear, width = Size/500)) +
    geom_col(position = "dodge2")

来自ggplot2::position_dodge 参考(我的粗体字):

Dodging 在调整水平位置的同时保留几何图形的垂直位置。 position_dodge2 是 position_dodge 的一种特殊情况,用于排列可以有可变宽度的箱形图。 position_dodge2 也适用于条形和矩形。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    • 1970-01-01
    • 2013-08-28
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多