Как удалить последний десятичный знак, равный 0, с оси y?

#r #ggplot2

Вопрос:

Я создаю линейный график с помощью ggplot2, и я хочу удалить последний десятичный знак 0 с оси y. Выполнив следующий код, вы увидите, что ось y имеет отметки 0,050, 0,010, 0,005 и 0,001. Тем не менее, я хочу, чтобы отметки 0,05, 0,01, 0,005 и 0,001 удаляли окончательный 0. Как я могу этого достичь?

 tibble(
  timepoints = 1:100,
  alpha      = 1 - exp(log(0.95)/(1:100))
) %>% 
  ggplot(
    .,
    aes(
      x = timepoints,
      y = alpha
    )
  )  
  geom_point()  
  geom_line()  
  scale_x_continuous(
    n.breaks = 6
  )  
  scale_y_continuous(
    breaks = c(
      0.05,
      0.01,
      0.005,
      0.001
      )
  )  
  theme(
    text = element_text(size=30)
  )
 

Комментарии:

1. Используйте labels аргумент для вашего вызова scale_y_continuous .

2. @Limey получил это, и я получил то, что хотел! Вы можете опубликовать комментарий с полным кодом в качестве ответа. Я обязательно поддержу вас, если вы это сделаете.

Ответ №1:

Как указано в комментариях @Limey, вы можете использовать labels аргумент для установки нужного текста. Я бы использовал функцию для удаления хвостовых нулей из десятичных знаков. Таким образом, если вы измените свои перерывы в будущем, метки по-прежнему будут иметь желаемый эффект.

 tibble(
 timepoints = 1:100,
 alpha      = 1 - exp(log(0.95)/(1:100))
) %>% 
 ggplot(aes(x = timepoints,y = alpha ))  
 geom_point()  
 geom_line()  
 scale_x_continuous( n.breaks = 6)  
 scale_y_continuous(breaks = c(0.05,0.01,0.005,0.001),
                    labels = function(x) sub("0 $", "", x))  
 theme(text = element_text(size=30))
 

Комментарии:

1. Спасибо вам за ответ, и это здорово знать, как получить эффект, не зависящий от перерывов, тоже!