【发布时间】:2022-01-23 05:27:40
【问题描述】:
在连续范围内,我可以使用breaks 降低刻度标签的密度,并使用scales::pretty_breaks() 以灵活的方式很好地控制它们的密度。但是,我不知道如何用离散的比例实现类似的东西。具体来说,如果我的离散标签是letters,那么假设我想显示每隔一个标签来清理图表。有没有一种简单、系统的方法来做到这一点?
我有一个可行的技巧(见下文),但正在寻找更自动和优雅的东西。
library(tidyverse)
# make some dummy data
dat <-
matrix(sample(100),
nrow = 10,
dimnames = list(letters[1:10], LETTERS[1:10])) %>%
as.data.frame() %>%
rownames_to_column("row") %>%
pivot_longer(-row, names_to = "column", values_to = "value")
# default plot has all labels on discrete axes
dat %>%
ggplot(aes(row, column)) +
geom_tile(aes(fill = value))
# desired plot would look like following:
ylabs <- LETTERS[1:10][c(T, NA)] %>% replace_na("")
xlabs <- letters[1:10][c(T, NA)] %>% replace_na("")
# can force desired axis text density but it's an ugly hack
dat %>%
ggplot(aes(row, column)) +
geom_tile(aes(fill = value)) +
scale_y_discrete(labels = ylabs) +
scale_x_discrete(labels = xlabs)
由reprex package (v2.0.1) 于 2021 年 12 月 21 日创建
【问题讨论】: