У меня есть следующие данные:
library(tidyverse)
mydat <- structure(list(group = structure(1:6, .Label = c(
"(0,1e+06]",
"(1e+06,2e+06]", "(2e+06,3e+06]", "(3e+06,4e+06]", "(4e+06,5e+06]",
"(5e+06,6e+06]"
), class = "factor"), n = c(
1446801L, 47133L,
22577L, 14941L, 10747L, 8703L
), log_n = c(
6.16040880026537, 4.67332508334081,
4.3536662329829, 4.17437966574899, 4.031287248877, 3.93966898352233
)), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame"))
mydat
#> # A tibble: 6 x 3
#> group n log_n
#> <fct> <int> <dbl>
#> 1 (0,1e+06] 1446801 6.16
#> 2 (1e+06,2e+06] 47133 4.67
#> 3 (2e+06,3e+06] 22577 4.35
#> 4 (3e+06,4e+06] 14941 4.17
#> 5 (4e+06,5e+06] 10747 4.03
#> 6 (5e+06,6e+06] 8703 3.94
На самом деле количество строк составляет до 1000 строк.
Тогда я попытался построить сюжет следующим образом:
p <- mydat %>%
ggplot(aes(x = group, y = log_n)) +
geom_col() +
coord_flip() +
scale_x_discrete(limits = rev(levels(mydat$group))) +
theme_bw() +
theme(strip.background = element_blank(), strip.text = element_text(size = 12))
p
Который производит это:
Я хочу уменьшить количество тиков по оси Y (group
) до 3 тиков. Я попробовал это, но не получилось:
p + scale_y_continuous(breaks = pretty(mydat$group, n = 3))
Какой правильный способ сделать это?
Обновлено
После того, как я попробовал подход @astrofunkswag. Я получаю этот сюжет, где порядок обратный. Я хочу сохранить тот же порядок, что и раньше: