r - 添加带有小刻度的第二个轴(顶部和右侧)

标签 r ggplot2

我正在尝试创建一个在图的顶部和右侧有一个轴的图。我向 x 轴和 y 轴添加了小刻度,但我注意到当我尝试添加第二个 x 轴和 y 轴时,小刻度被删除。我还希望删除第二个轴标签,但这似乎不起作用。我想知道我添加小刻度的方式是否存在问题?

我的主要问题是,如何向第二个轴添加小刻度以及如何删除标签。

data.bw <- structure(list(num = c(88L, 58L, 15L, 11L, 14L, 29L, 34L, 40L, 
24L, 20L, 3L, 1L, 1L), bar = c(0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5), group = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "A", class = "factor")), class = "data.frame", row.names = c(NA, 
-13L))

library(ggplot2)
library(ggh4x)

    ggplot(data.bw, aes(bar,num, fill = group)) +
      geom_bar(stat = 'identity', width = 1) + 
      scale_fill_manual(values = c('orange', 'khaki')) + 
      scale_y_continuous(
        minor_breaks = seq(0, 90, by = 2),
        breaks = seq(0, 90, by = 10), limits = c(0, 90),
        expand = expansion(mult = c(0, 0)),
        sec.axis = dup_axis(name = NULL),
        guide = "axis_minor" 
      ) +
      scale_x_continuous(
        minor_breaks = seq(0, 14, by = 0.5),
        breaks = seq(0, 14, by = 2), limits = c(0, 14),
        expand = expansion(mult = c(0, 0)),
        sec.axis = dup_axis(name = NULL),
        guide = "axis_minor"
      ) +
      scale_fill_manual(values = alpha(c("red"), .3)) +
      theme_bw() +
      theme(
        panel.border = element_rect(colour = "black", fill=NA, size=1),
        plot.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank()
      )

enter image description here

最佳答案

据我所知,ggplot2 中的辅助轴没有获得任何较小的中断信息来传递给指南(或被搞砸)。另请参阅相关 issue 。但是,由于您使用的是 dup_axis(),我假设您想要复制主轴,您也可以使用 guides(x.sec = "axis_minor", y .sec = "axis_minor"),直接从刻度而不是辅助刻度中获取顺序。

删除辅助轴的标签就像将适当的主题元素设置为 element_blank() 一样简单。如果您指的是轴标题而不是文本,则默认情况下这些标题是关闭的,但您可以将它们作为 guides(x.sec =guide_axis_minor(title = "My title")) 传递(如果您需要它们)。

data.bw <- structure(list(num = c(88L, 58L, 15L, 11L, 14L, 29L, 34L, 40L, 
                                  24L, 20L, 3L, 1L, 1L), bar = c(0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 
                                                                 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5), group = structure(c(1L, 
                                                                                                                            1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "A", class = "factor")), class = "data.frame", row.names = c(NA, 
                                                                                                                                                                                                                                                   -13L))

library(ggplot2)
library(ggh4x)

ggplot(data.bw, aes(bar,num, fill = group)) +
  geom_bar(stat = 'identity', width = 1) + 
  scale_fill_manual(values = c('orange', 'khaki')) + 
  scale_y_continuous(
    minor_breaks = seq(0, 90, by = 2),
    breaks = seq(0, 90, by = 10), limits = c(0, 90),
    expand = expansion(mult = c(0, 0)),
    guide = "axis_minor" 
  ) +
  scale_x_continuous(
    minor_breaks = seq(0, 14, by = 0.5),
    breaks = seq(0, 14, by = 2), limits = c(0, 14),
    expand = expansion(mult = c(0, 0)),
    guide = "axis_minor"
  ) +
  guides(x.sec = "axis_minor", y.sec = "axis_minor") +
  theme_bw() +
  theme(
    panel.border = element_rect(colour = "black", fill=NA, size=1),
    plot.background = element_blank(),
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    axis.text.x.top = element_blank(),
    axis.text.y.right = element_blank()
  )

reprex package 于 2021 年 9 月 13 日创建(v2.0.1)

关于r - 添加带有小刻度的第二个轴(顶部和右侧),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69167607/

相关文章:

r - devtools::install_git 无法安装 Depends 或 Imports 中包的依赖项

r - 如何使用 ggplot2 的 geom_dotplot() 与对称间隔和分隔的点

r - R中的堆积柱状图

r - 自定义分区统计图,其中各州按领土分组

r - 2 路 FE 模型在 R 中给出 "empty model"

r - 如何用公式规范绘制回归线

r - 如何获取R中字符串对的所有组合列表

r - ggplot 上的混合刻度

r - T-SNE 图中的凸包 - R

r - 根据条件和列名称改变乘法列