我在SO上看到了两个很好的例子,它们在ggplot2中将两组不同的刻度添加到了同一幅图中,请参见Insert blanks into a vector for, e.g., minor tick labels in R和ggplot2 displaying unlabeled tick marks between labeled tick marks。然而,如果我想要两组不同长度的刻度怎么办? 在基本的R中做这件事相当容易(数据和代码修改自参考文献2):
library("magrittr")
library("ggplot2")
set.seed(5)
df <- data.frame(x = rnorm(500, mean = 12.5, sd = 3))
breaks <- seq(2.5, 25, .5)
plot(hist(df$x,breaks = breaks), xaxt = "n", col = "gray66")
axis(1, tck = -.02, at = breaks[breaks %% 2.5 == 0], lwd = 2, lwd.ticks = 2)
axis(1, tck = -.01, lwd = 0, at = breaks[breaks %% 2.5 != 0], labels = NA, lwd.ticks = 1)
我得到的图形如下(请注意 X 轴上有两组不同长度的刻度线):
我不知道在 ggplot2 中该如何实现这个效果。当我尝试传递与 breaks
长度相同的向量到 theme()
中的 axis.ticks.length
参数时,它只取向量的第一个元素进行绘制。
ggh4x
包中的文档,我认为您会发现可以编辑刻度标记的长度。 - Peter