【问题标题】:Change default render option of R's guide_axis()更改 R 的 guide_axis() 的默认渲染选项
【发布时间】:2021-10-29 22:14:05
【问题描述】:

我想知道是否可以在R (https://ggplot2.tidyverse.org/reference/guide_axis.html) 中更改guide_axis() 函数的默认渲染选项。

默认情况下,n.dodge 属性会更改用于呈现垂直轴标签的行数和水平轴的列数。 我想转置这种关系以改变垂直轴的标签行数。

虽然一开始这似乎违反直觉,但解决饼图中重叠标签的问题可能很有用。

下面是一个可视化我的意思的例子。

library(data.table)
library(ggplot2)


df <- data.frame(name = c('A', 'B', 'C', 'D'),
                 value = c(1, 1, 1, 97))



p <- ggplot(data = df, aes(x = '', y = value, fill = name)) +
  geom_bar(stat = 'identity', width = 1) +
  coord_polar('y', start = 0) +
  theme(legend.position = 'none',
        axis.title = element_blank(),
        axis.ticks = element_blank(),
        panel.background = element_blank(),
        panel.grid = element_blank()) +
  scale_y_continuous(breaks = sum(df$value) - cumsum(df$value) + df$value/2,
                     labels = paste(df$value, 'Percent', sep = ' '),
                     guide = guide_axis(n.dodge = 4))

p

显然,n.dodge = 4 对本示例中的饼图标签没有影响。 因此,我的想法是将轴渲染视为水平,而不是垂直。

这种方法总体上是否有意义,还是ggplot 的标签组织方式完全不同? 如果垂直轴的行有意义,我该如何实现?

最好, 奥利弗

【问题讨论】:

  • 我认为coord_polar() 甚至没有使用该指南。如果您将coord_polar()$render_axis_vcoord_cartesian()$render_axis_v 进行比较,您会发现polar 方法不会绕过任何指南,而是具有某种硬编码的绘制轴的方式。即使您设置了guide = "none",它仍然会绘制坐标轴。

标签: r ggplot2 pie-chart axis-labels


【解决方案1】:
  1. 我觉得ggplot2 饼图通常用geom_text 标记而不是轴标签。 (ggplot2 pie chart gallery)

  2. 要修复重叠标签,我们可以使用包ggrepel 并将geom_text 替换为geom_text_repel。 (An example 带有ggrepel 标签的饼图)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多