我如何自动在离散轴上每n个值中仅显示1个?
我可以这样获得其他所有值:
library(ggplot2)
my_breaks <- function(x, n = 2) {
return(x[c(TRUE, rep(FALSE, n - 1))])
}
ggplot(mpg, aes(x = class, y = cyl)) +
geom_point() +
scale_x_discrete(breaks = my_breaks)
但是我认为不可能将n
参数指定为my_breaks
,对吗?
这可能是另一种方式吗?我正在寻找一种适用于字符列和因子列的解决方案。
答案 0 :(得分:4)
不太像,但是scale_x_discrete
可以将函数用作breaks参数,因此您只需要调整代码以使其成为 functional (返回功能),然后一切正常:
every_nth = function(n) {
return(function(x) {x[c(TRUE, rep(FALSE, n - 1))]})
}
ggplot(mpg, aes(x = class, y = cyl)) +
geom_point() +
scale_x_discrete(breaks = every_nth(n = 3))
答案 1 :(得分:2)
从 ggplot 3.3.0 开始,也可以使用 scale_x_discrete(guide = guide_axis(n.dodge = 2))
解决离散轴上的密集标签问题,它给出(文档中的图):
有关详细信息,请参阅发行说明的 rewrite of axis code 部分。