断点不符合 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")
我正在尝试绘制一些 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")