在 multi-panel 图中将顶部刻度添加到 y-axis (facet_wrap/ggplot2)

Adding top tick to y-axis in multi-panel plots (facet_wrap/ggplot2)

我有一个使用 facet_wrap 函数创建的 multi-panel 图,我想为每个 y-axis 添加一个顶部勾号(以便每个 y-axis 以数字结尾)。

当我使用 scale_y_continuous 一次创建一个图时,我可以手动执行此操作(根据最大值设置限制),但我不确定如何使用 facet_wrap.使用 max() 设置限制似乎不起作用。

只是为了让您了解我在说什么,下面是使用 ggplot2 创建单图的代码,并使 y-axis 上的顶部刻度出现。

plot <- ggplot(diamonds, aes(clarity)) +
  geom_bar() +
  scale_y_continuous(expand = c(0, 0),limits=c(0,15000)) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5),
    axis.line = element_line(),
    axis.title = element_text(size=15,face="bold")) +
  xlab("x_1") +
  ylab("y_1") +
  theme(panel.background = element_blank()
    ,panel.grid.major = element_blank()
    ,panel.grid.minor = element_blank()
    ,panel.border = element_blank()) +
  labs(title = "xy", size = 20)
plot

这就是情节。

提前致谢! 编辑:我编辑了代码以显示情节。再次感谢!

您可以定义自己的休息功能。一个简单的解决方案是

break_fct <-  function(x){
  round(seq(min(x), max(x), length = 5))
}

当然,您可以使用 pretty 和最大值的某种组合来改进这一点。您应该找到适合您的数据的解决方案。

plot <- ggplot(diamonds, aes(clarity)) +
  geom_bar() +
  scale_y_continuous(expand = c(0, 0), breaks = break_fct) +
  theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5),
        axis.line = element_line(),
        axis.title = element_text(size=15, face="bold")) +
  xlab("x_1") +
  ylab("y_1") +
  theme(panel.background = element_blank()
        ,panel.grid.major = element_blank()
        ,panel.grid.minor = element_blank()
        ,panel.border = element_blank()) +
  labs(title = "xy", size = 20) + 
  facet_grid(cut~., scales = "free_y")

plot