在多面板图中将顶部刻度添加到y轴(facet_wrap / ggplot2)

时间:2015-05-18 01:46:57

标签: r ggplot2 facet-wrap

我有一个使用facet_wrap函数创建的多面板图,我想在每个y轴上添加一个顶部刻度(以便每个y轴以一个数字结尾)。

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

为了让您了解我在说什么,下面是使用ggplot2创建单个图表的代码,并启用y轴上的顶部勾号。

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

这就是情节。

enter image description here

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

1 个答案:

答案 0 :(得分:1)

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

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

plot