ggplot函数用于整数中断(较旧,因此解决方案不起作用)

问题描述 投票:0回答:1
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看起来像这样,其中包括十进制数字的中断。

integer 1

有多种方法可以从此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的中断。

integer 2


EDIT-我应该明确指出,我确实想修改(或创建一个新的)函数来解决此问题,因此我不必手动设置限制或中断。我可以手动设置此df数据帧的值,但是col2的值更改时会发生什么?我希望该函数在col2值为0.40.7或它们为39等时起作用。但是我不想更改限制和每当我有一个新的数据框时,手动中断。

r ggplot2 scale
1个回答
3
投票
© www.soinside.com 2019 - 2024. All rights reserved.