例如,假设我有两个不同尺度的变量;
df = data.table::data.table(
date = seq(from = lubridate::ymd("2010-01-01"),
to = lubridate::ymd("2020-01-01"), length = 100),
var1 = rpois(n = 100, lambda = 84),
var2 = rpois(n = 100, lambda = 300)
)
Run Code Online (Sandbox Code Playgroud)
如果我决定使用双 y 轴图,请使用代码;
library(ggplot)
df |>
ggplot(aes(x = date)) +
geom_line(aes(y = var1), col = "royalblue") +
geom_line(aes(y = var2), col = "red") +
scale_y_continuous(
name = "var1",
sec.axis = sec_axis(~., name = "var2")
) +
theme_light()
Run Code Online (Sandbox Code Playgroud)
结果如下;
如何调整第二个 y 轴的限制,例如从 250 开始到 400 结束?这将使线条更加靠近,从而可以更清晰地了解趋势。
您可以在绘图时转换数据,然后在调用中撤消转换sec_axis()。在这里,我只是从数据值中减去 200,然后向标签添加 200 以反映更改:
library(ggplot2)
library(data.table)
library(lubridate)
df = data.table(
date = seq(from = ymd("2010-01-01"), to = ymd("2020-01-01"), length = 100),
var1 = rpois(n = 100, lambda = 84),
var2 = rpois(n = 100, lambda = 300)
)
df |>
ggplot(aes(x = date)) +
geom_line(aes(y = var1), col = "royalblue") +
geom_line(aes(y = var2-200), col = "red") +
scale_y_continuous(
name = "var1",
sec.axis = sec_axis(~.+200, name = "var2")
) +
theme_light()
Run Code Online (Sandbox Code Playgroud)

创建于 2024-01-25,使用reprex v2.0.2