根据窗口大小调整坐标轴标签重叠问题

3

正如其他问题所显示的那样,在ggplot2中,当窗口大小非常小且刻度数/标签非常大时,轴上的标签可能会重叠:

x <- data.frame(x1=1:100,x2=1:100)
ggplot(x, aes(x1,x2))+geom_point() +
scale_x_continuous(breaks = x1[x1 %% 2 == 0])

ggplot

在通用图中,当我们改变窗口大小时,标签的数量会自动适应(并且所有刻度线都会被绘制)。
plot(x1,x2, xaxt="n")
axis(1, at = x1[x1 %% 2 == 0], labels = x1[x1 %% 2 == 0])

generic

假设缩写标签或更改其角度(仅有少量)并不有效,那么是否可以设置ggplot2以根据窗口大小删除某些标签?强制ggplot2作为一般图形反应是可能的吗?
解决方案是计算标签数量并使其适应窗口大小,但这很复杂,因为它取决于外部因素(屏幕大小、使用的数据集等)。

如果您正在使用ggsave,您可能可以根据传递给该函数的宽度/高度参数来修复中断数量。您想要的可能无法实现,但我很乐意被证明是错误的。 - Roman Luštrik
1个回答

2

并非针对每个可能的窗口大小进行自动调整,但这个想法很有帮助。您可以使用labels=来抑制某些标签:

exclude_labels <- function(x, step) {x[-seq.int(1, length(x), step)] <- ""; x}
ggplot(x, aes(x1,x2))+ geom_point() +
scale_x_continuous(breaks = x$x1[x$x1 %% 2 == 0], 
                   labels = exclude_labels(x$x1[x$x1 %% 2 == 0], 4))

enter image description here


好的,谢谢。这似乎是在不同数据集上完成此操作最简单的方法。 - Philippe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接