首页 文章

mirror_ticks函数不适用于ggplot

提问于
浏览
0

我想在图表的四个边上放置刻度线 . 建议的方式是 mirror_ticks .

library(ggplot2)
library(ggplotTicks)

sp6<-ggplot(Anna_Smooth, aes(y=log10(Prob2), x=log10(AvSize)))+
  geom_point( data=Anna_Smooth, aes(y=log10(Prob2), x=log10(AvSize), color=PART) )+ 
  guides( color=FALSE)


sp8<-sp6+ labs(x=expression(paste(log(s))))+
  labs(y=expression(paste(log(P(s))))   )+
  theme(axis.text.y   = element_text(size=14),
        axis.text.x   = element_text(size=14),
        axis.title.y  = element_text(size=15),
        axis.title.x = element_text(size=15),
        panel.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.line = element_line(colour = "black"),
        panel.border = element_rect(colour = "black", fill=NA, size=2)
)


sp10<-mirror_ticks(sp10, allPanels=TRUE)

我的输出sp10在相对的面板上没有刻度,如果我放 allPanels=TRUE 则相同的结果

有修复吗?我愿意学习如何通过主题设置实现这一目标?

1 回答

  • 2

    ggplot2 版本2.2.0(2016-11-11)开始, scale_x_continuous()scale_y_continuous() 可以显示一个辅助轴,该辅助轴与主轴相对,可以使用 sec.axis 参数进行控制 .

    这可用于镜像刻度线 .

    OP没有提供可重复的数据,因此我们使用 ggplot2 包附带的 mpg 数据集:

    没有镜像刻度线的图表

    library(ggplot2)
    g1 <- ggplot(mpg, aes(log10(displ), log10(hwy))) +
      geom_point() +
      theme(
        axis.text.y   = element_text(size = 14),
        axis.text.x   = element_text(size = 14),
        axis.title.y  = element_text(size = 15),
        axis.title.x  = element_text(size = 15),
        panel.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.line = element_line(colour = "black"),
        panel.border = element_rect(
          colour = "black",
          fill = NA,
          size = 2
        )
      ) 
    g1
    

    带辅助轴的图表

    g1 + 
      scale_x_continuous(sec.axis = dup_axis()) + 
      scale_y_continuous(sec.axis = dup_axis())
    
    g1 + 
      scale_x_continuous(sec.axis = dup_axis(name = NULL)) + 
      scale_y_continuous(sec.axis = dup_axis(name = NULL))
    
    g1 + 
      scale_x_continuous(sec.axis = dup_axis(name = NULL, labels = NULL)) + 
      scale_y_continuous(sec.axis = dup_axis(name = NULL, labels = NULL))
    

    带有log10刻度的镜像刻度线

    辅助轴也可用于 scale_x_log10()scale_x_log10() 功能 .

    因此,可以避免在 aes() 的调用中使用 log() 函数,但是通过指定适当的对数比例:

    ggplot(mpg, aes(displ, hwy)) +
      geom_point() +
      theme(
        axis.text.y   = element_text(size = 14),
        axis.text.x   = element_text(size = 14),
        axis.title.y  = element_text(size = 15),
        axis.title.x = element_text(size = 15),
        panel.background = element_blank(),
        panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.line = element_line(colour = "black"),
        panel.border = element_rect(
          colour = "black",
          fill = NA,
          size = 2
        )
      ) +
      scale_x_log10(sec.axis = dup_axis(name = NULL, labels = NULL)) + 
      scale_y_log10(sec.axis = dup_axis(name = NULL, labels = NULL))
    

相关问题