在连续尺度上转置标签[瀑布图,R]

问题描述 投票:0回答:1

我正在自定义瀑布图,几乎已经达到最终结果,除了现在的 x 轴上的标签(在

coord_flip()
之后)。我现在的 x 轴总和为 100%,虽然在
scale_y_reverse()
之后使用
coord_flip()
帮助我保持了预期的条形层次结构,但它将比例设置为
limits = c(100, 0)
,而不是我想要保留的
limits = c(0, 100)
。这是处理它的正确方法,除了对我的使用来说这并不重要,因为我只是试图以百分比形式可视化增量。

这是一个表示:

data_fig <- data.frame(class = rev(c("Class A", "Class B", "Class C", "Other Classes")),
                       values = rev(c(15, 25, 50, 10)))

waterfalls::waterfall(
    .data = data_fig,
    rect_width = 0.7, 
    fill_by_sign = FALSE,
    put_rect_text_outside_when_value_below = FALSE,
    rect_border = NA,
    total_rect_border_color = NA,
    draw_axis.x = "none") +
    coord_flip() +
    scale_y_reverse()

我尝试过的:

  • limits = (0, 100)
    中设置
    scale_y_reverse()
    ;行被删除。
  • 设置
    axis.text.x = element_blank()
    并尝试手动覆盖,但与连续缩放相关的错误。
  • 以不同的方式处理数据的顺序,
    coord_flip()
    scale_xy_reverse()
  • 尝试使用
    geom_rect()
    /
    geom_segment()
    构建瀑布图,但不知何故无法解决这个特定问题(据我了解瀑布库使用这些函数)。

我很欣赏有关如何保持

limits = (0, 100)
和其余图形元素不变的想法。提前非常感谢!

r ggplot2 customization axis-labels
1个回答
0
投票

以相反的顺序指定中断和标签似乎会生成您想要的结果:

waterfalls::waterfall(
  .data = data_fig,
  rect_width = 0.7, 
  fill_by_sign = FALSE,
  put_rect_text_outside_when_value_below = FALSE,
  rect_border = NA,
  total_rect_border_color = NA,
  draw_axis.x = "none") +
  coord_flip() +
  scale_y_reverse(breaks=c(100, 75, 50, 25, 0), labels=c(0, 25, 50, 75, 100))

© www.soinside.com 2019 - 2024. All rights reserved.