library(tidyverse)
df <- tibble(col1 = c("A", "B"), col2 = c(0.4, 0.7))
#> # A tibble: 2 x 2
#> col1 col2
#> <chr> <dbl>
#> 1 A 0.4
#> 2 B 0.7
ggplot(df, aes(col1, col2)) + geom_col()
上面数据帧的ggplot看起来像这样,其中包括十进制数字的中断。
有多种方法可以从此stackoverflow question指定整数中断。他们似乎都没有做我想要的。我希望有两个休息时间,一个在0
,另一个在1
。如何修改以下这些功能之一来完成此操作?
# Attempt 1
ggplot(df, aes(col1, col2)) +
geom_col() +
scale_y_continuous(
breaks = function(x) unique(floor(pretty(seq(0, (max(x) + 1) * 1.1)))))
# Attempt 2
ggplot(df, aes(col1, col2)) +
geom_col() +
scale_y_continuous(breaks = scales::pretty_breaks(2))
# Attempt 3
ggplot(df, aes(col1, col2)) +
geom_col() +
scale_y_continuous(breaks = c(0, 1))
# Attempt 4
ggplot(df, aes(col1, col2)) +
geom_col() +
scale_y_continuous(
breaks = function(x) seq(ceiling(x[1]), floor(x[2]), by = 1))
# Attempt 5
ggplot(df, aes(col1, col2)) +
geom_col() +
scale_y_continuous(
breaks =
function(x, n = 5) pretty(x, n)[round(pretty(x, n),1) %% 1 == 0])
上面的大多数尝试都会产生下面的图。没有人产生我想要的东西。请注意,缺少1
的中断。
EDIT-我应该明确指出,我确实想修改(或创建一个新的)函数来解决此问题,因此我不必手动设置限制或中断。我可以手动设置此df
数据帧的值,但是col2
的值更改时会发生什么?我希望该函数在col2
值为0.4
和0.7
或它们为3
和9
等时起作用。但是我不想更改限制和每当我有一个新的数据框时,手动中断。