我有一个包含不同变量和不同单位的时间序列,我想显示在同一个图上.

ggplot不支持多轴(as explained here),因此我遵循建议,try 使用面绘制曲线:

x <- seq(0, 10, by = 0.1)
y1 <- sin(x)
y2 <- sin(x + pi/4)
y3 <- cos(x)

my.df <- data.frame(time = x, currentA = y1, currentB = y2, voltage = y3)
my.df <- melt(my.df, id.vars = "time")
my.df$Unit <- as.factor(rep(c("A", "A", "V"), each = length(x)))

ggplot(my.df, aes(x = time, y = value)) + geom_line(aes(color = variable)) + facet_wrap(~Unit, scales = "free_y", nrow = 2)

结果如下:

问题是只有一个y标签,上面写着"值",我想要两个:一个是"电流(A)",另一个是"电压(V)".

这可能吗?

推荐答案

ggplot2_2.2.1中,可以使用facet_wrap中的strip.position参数将面板条移动为y轴标签.但是,使用这种方法时,条带标签和y轴标签并不相同,这可能并不理想.

将条形标签放置在y轴("左")上后,可以通过将命名向量指定为labeller来更改标签,以用作查找表.

条形标签可以通过strip.placement in theme移动到y轴之外.

移除条形背景和y轴标签,以获得带有两个窗格和不同y轴标签的最终图形.

ggplot(my.df, aes(x = time, y = value) ) + 
     geom_line( aes(color = variable) ) + 
     facet_wrap(~Unit, scales = "free_y", nrow = 2, 
                strip.position = "left", 
                labeller = as_labeller(c(A = "Currents (A)", V = "Voltage (V)") ) )  +
     ylab(NULL) +
     theme(strip.background = element_blank(),
           strip.placement = "outside")

enter image description here

R相关问答推荐

feature_weights参数没有影响Xgboost

R中的Fasttext langue_identification返回太多参数-如何与文本匹配?

如何使用行政边界形状文件中的人口普查数据调整格栅数据集中的人口数据

是否有R代码来判断一个组中的所有值是否与另一个组中的所有值相同?

如何使用geom_sf在边界显示两种 colored颜色 ?

提取R中值和列名的所有可能组合

寻找图片边缘

在位置周围设定一个半径并识别该半径内的其他位置

保存包含循环和ifelse的函数的输出

如何修复R码的置换部分?

矩阵%*%矩阵中的错误:需要数字/复杂矩阵/向量参数

如何根据组大小应用条件过滤?

筛选出以特定顺序患病的个体

我如何才能找到FAMILY=POISSON(LINK=&Q;LOG&Q;)中的模型预测指定值的日期?

从一个列表的框架中移除列表包装器

R Select()可以测试不存在的子集列

如何计算增加10米(0.01公里)的行?

如何在R中使用混合GAM模型只对固定的影响因素进行适当的预测?

如何使用ggplot2根据绘图中生成的斜率对小平面进行排序?

每行不同列上的行求和