我有一個看起來像這樣的資料框:
library(tidyverse)
date = seq(as.Date("2022/1/1"), as.Date("2022/1/12"), by = "day");date
v1 = rnorm(12,0,1);length(date)
v2 = rnorm(12,10,1)
df = data.frame(date,v1,v2);df
date v1 v2
1 2022-01-01 -0.27742001 10.649777
2 2022-01-02 0.45117594 9.552337
3 2022-01-03 -0.57960540 8.377525
4 2022-01-04 0.03795781 9.016521
5 2022-01-05 -0.58670684 10.893805
6 2022-01-06 -0.10260160 10.445416
7 2022-01-07 -0.31061137 9.863794
8 2022-01-08 -0.01944977 8.859400
9 2022-01-09 -0.33269714 10.035201
10 2022-01-10 0.38196430 9.953147
11 2022-01-11 0.72070334 8.328117
12 2022-01-12 -0.71014679 8.046312
我想在輔助軸上繪制列 v2。如何在 R 中執行此操作?
我的努力如下:
p = ggplot()
geom_line(data =df,aes(x=date,y=v1),size=1)
scale_x_date(date_labels="%d",date_breaks ="1 day")
scale_y_continuous(sec.axis = sec_axis(v2, name="v2"));p
但報告我一個錯誤:
Error in `sec_axis()`:
! Can't convert `trans`, a double vector, to a function.
有什么幫助嗎?
uj5u.com熱心網友回復:
要繪制第二列,請添加第二個geom_line. 要修復錯誤,您必須將函式傳遞給sec_axisaka引數的第一個trans引數。該函式用于變換主軸的范圍。如果您不需要任何轉換,請使用標識函式trans = ~ .x:
set.seed(123)
library(ggplot2)
ggplot(data = df)
geom_line(aes(x = date, y = v1, color = "v1"), size = 1)
geom_line(aes(x = date, y = v2, color = "v2"), size = 1)
scale_x_date(date_labels = "%d", date_breaks = "1 day")
scale_y_continuous(sec.axis = sec_axis(~ .x, name = "v2"))

uj5u.com熱心網友回復:
這是一個替代方案:
library(tidyverse)
coeff <- 10
ggplot(df, aes(x = date))
geom_line(aes(y=v1, color="v1", linetype="v1"), size = 1)
geom_line(aes(y=v2/coeff, color="v2", linetype="v2"), size = 1)
scale_y_continuous(
name = "your label",
sec.axis = sec_axis(~.*coeff, name = "your text")
)
scale_x_date(date_labels = "%d", date_breaks = "1 day")
scale_color_manual(values = c("red", "dodgerblue3"))
scale_linetype_manual(values = c(3, 1))
theme_bw(14)
theme(
axis.title.y = element_text(color = "red", size=13, face="bold"),
axis.title.y.right = element_text(color = "blue", size=13, face="bold"),
axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=1)
)

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/523465.html
標籤:r数据框ggplot2
