r - 如何在 R 中的 ggplot 的一个图中绘制 2 个不同 y 轴上的两个列向量?

标签 r dataframe ggplot2

我有一个如下所示的数据框:

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.

有什么帮助吗?

最佳答案

要绘制第二列,请添加第二个geom_line。要修复该错误,您必须将函数传递给 sec_axis 的第一个参数(也称为 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"))

关于r - 如何在 R 中的 ggplot 的一个图中绘制 2 个不同 y 轴上的两个列向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74203961/

相关文章:

r - 矢量子集性能 : name versus index

Python - JSON 数组到 DataFrame

python - 使用多个条件屏蔽 DataFrame

python - 如何在 Pandas Dataframe 中增量添加行?

python - 在Python中使用Rpy2更改ggplot2中的因子顺序

r - 如何捕获和操作 ggplot2 默认轴值

r - 如何在ggplot2 R中向轴添加潜台词

r - R中的多项逻辑多级模型

r - r 中的 ifelse 语句相当于 '&'

r - 使用 data.table 根据特定日期条件过滤观察结果