断点不符合 scale_y_continuous()

Break points not behaving with scale_y_continuous()

我正在尝试绘制一些 y 值较大的数据:

p <- seq(0.1, 0.9, 0.1)
cost <- 1/(p^2)^15 * 15 * 0.1
data <- data.frame(x=p, y=cost)
ggplot(data, aes(x=x, y=y)) + 
  geom_point(shape=18, color="blue")+
  scale_y_continuous(name="Cost", breaks=c(0, 1e5, 1e10, 1e15, 1e20, 1e25, 1e30))

然而,当像这样指定断点时,除了第一个和最大的 y 值之外的所有数据点都与 y=0 线对齐。

参见:

建议?

最好的办法是重新缩放数据,例如此处使用对数。您可以只在图表的标签中表示这一点,并仍然提供未缩放的 y 轴标签。

breaks = c(0, 1e5, 1e10, 1e15, 1e20, 1e25, 1e30)

ggplot(data, aes(x=x, y=log(y))) + 
  geom_point(shape=18, color="blue")+
  scale_y_continuous(name = "Cost", 
                     breaks = log(breaks),
                     labels = breaks)

更简单,有点生疏:

ggplot(data, aes(x=x, y=y)) + 
  geom_point(shape=18, color="blue")+
  scale_y_continuous(name="Cost",
                     breaks = c(0, 1e5, 1e10, 1e15, 1e20, 1e25, 1e30),
                     trans = "log")