在ggplot中更改y轴刻度

change y axis scale in ggplot

我正在尝试在 r 中复制 graphpad 绘制的图 但我在更改 y 轴时遇到问题 这是一个示例数据和我的绘图代码:

library(ggplot2)
data <- data.frame(names = rep(factor(LETTERS[1:3])),
                   values = c(0.001, 0.02 ,0.95),
                   group = rep("A",3))


ggplot(data,
       aes(x = group,
           y = values,
           fill = names)) + geom_bar(stat = "identity", position='stack') +
  scale_y_continuous(breaks = c(0.001,0.01,0.1,1), labels=c(0.001,0.01,0.1,1))

我的代码的结果在顶部,但我想像底部的图像一样绘制它。

您可以将这些值转换为它们的对数,然后添加一个常量,使所有对数值都大于 0。然后 re-label 轴适当地:

data2 <- data %>% 
  mutate(logvalues = log10(values) - min(log10(0.0001)))

ggplot(data2[order(-data2$logvalues),], 
         aes(x = group, y = logvalues, fill = names)) + 
  geom_col(position = 'identity') +
  scale_y_continuous(breaks = 0:4, labels = ~ 10^(.x-4))