绘制数据和操纵 y 轴

Plotting data and manipulating y-axis

我有这样的数据,数据绘制如下(灵感来自 post):

x_val <- 0:250
y_val <- c(seq(0,1, 0.1), 1:10)
set.seed(1234)
data <- data.frame(x = sample(x_val, 30, replace = TRUE),
                   y = sample(y_val, 30, replace = TRUE))
library(ggplot2)
p <- ggplot(data, aes(x, y)) + geom_point()
p + scale_y_continuous(breaks = seq(0, 10, by = 1))

我希望 y 轴的一半从 0 到 1,另一半 y 轴从 1 到 10。 有什么办法吗?

尝试次数:

我试过了

scale_y_continuous(breaks = c(seq(0, 1, 0.1), seq(1, 10, 1)))

,但它不起作用。我对如何攻击这个感到困惑。

编辑:为清楚起见,我想要以下情节

您绘制的比例尺不是线性的(0 和 1 之间的差值不等于 1 和 10 之间的差值,但直线距离相等)。
因此,您需要转换数据。在您的情况下,您正在寻找 log10 变换,因为对数尺度上 0.1 和 1 之间的距离等于 1 和 10 之间的距离(请注意,0 在对数尺度上无效):

ggplot(data, aes(x, y)) + geom_point() + scale_y_log10()

请注意 scale_y_log10scale_y_continuous(trans = "log10") 相同。 这会将您的点转换为对数刻度,同时将 y 轴标签保留在原始刻度上。
比较

ggplot(data, aes(x, log(y))) + geom_point()

这会在对数尺度上转换您的点,还会转换 y 轴标签。