【问题标题】:Add second axes (top and right) with minor ticks添加带有小刻度的第二个轴(顶部和右侧)
【发布时间】:2021-09-13 18:39:21
【问题描述】:

我正在尝试创建一个在图的顶部和右侧有一个轴的图。我在 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()
      )

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    据我所知,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 (v2.0.1) 于 2021-09-13 创建

    【讨论】:

    • 太棒了!那成功了!我是如此接近
    猜你喜欢
    • 2015-05-11
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    相关资源
    最近更新 更多