【问题标题】:How to scale ggplot stacked bar graph如何缩放ggplot堆积条形图
【发布时间】:2019-10-14 16:16:23
【问题描述】:

我这里有一组数据

structure(list(Variants = c(35, 1, 1, 0, 0, 0, 0, 0, 0, 0, 97, 
6, 0, 0, 0, 0, 0, 0, 0, 0, 133, 6, 2, 0, 0, 0, 0, 0, 0, 0, 51499, 
3508, 486, 155, 21, 2, 2, 0, 0, 0), Impact = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("HIGH", "LOW", "MODERATE", 
"MODIFIER"), class = "factor"), Number.of.dogs = c(1, 2, 3, 4, 
5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 
5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)), class = "data.frame", row.names = c(NA, 
-40L))

我正在尝试使用 ggplot2 制作堆叠条形图。

ggplot(all, aes(fill=Impact, y=Variants, x=Number.of.dogs, label = Variants)) + 
  geom_bar(stat="identity") +
  geom_text(size = 3, position = position_stack(vjust = 0.5))

问题是,第一个条形图太大了,以至于弄乱了比例,因此您看不到任何值。这是图表的图片。我想知道是否有一种方法可以更改 y 轴的比例,以便您可以看到与条形图的每个部分相关的值?

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    添加

    scale_y_continuous(trans='log2')

    或者正如@Rui在cmets中指出的那样,由于数据包含0,所以下面的函数会更合适

    trans=pseudo_log_trans(base = 2)

    【讨论】:

    • 数据为零。 scale_y_continuous(trans='pseudo_log') 更好?
    • 或trans=pseudo_log_trans(base = 2) 表示基数 2。
    • @Brian 确实如此,这是转换比例的缺点,另一个问题是您想要同时可视化幅度(y)和分类变量(填充),这是不可能的记录转换并协调这两者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 2021-01-17
    相关资源
    最近更新 更多