题
我有两组数据点,它们都与相同的主轴相关,但次轴不同。有没有办法使用 ggplot2 在 R 中将它们绘制在彼此之上?
我正在寻找的基本上是这样的:
4+ | | x . + 220 3+ . . | | x | 2+ . + 210 | x | 1+ . x x | | + 200 0+-+-+-+-+-+-+ time . temperatur x car sale
(这只是可能数据的示例)
解决方案
我不是这方面的专家,但据我了解,这对于lattice是可能的,但对于ggplot2则不行。 请参阅这篇精简博客文章 获取辅助轴图的示例。 另请参阅哈德利对此问题的回答.
这是如何在网格中执行此操作的示例(来自 加博尔·格洛腾迪克):
library(lattice)
library(grid) # needed for grid.text
# data
Lines.raw <- "Date Fo Co
6/27/2007 57.1 13.9
6/28/2007 57.7 14.3
6/29/2007 57.8 14.3
6/30/2007 57 13.9
7/1/2007 57.1 13.9
7/2/2007 57.2 14.0
7/3/2007 57.3 14.1
7/4/2007 57.6 14.2
7/5/2007 58 14.4
7/6/2007 58.1 14.5
7/7/2007 58.2 14.6
7/8/2007 58.4 14.7
7/9/2007 58.7 14.8
"
# in reality next stmt would be DF <- read.table("myfile.dat", header = TRUE)
DF <- read.table(textConnection(Lines.raw), header = TRUE)
DF$Date <- as.Date(DF$Date, "%m/%d/%Y")
par.settings <- list(
layout.widths = list(left.padding = 10, right.padding = 10),
layout.heights = list(bottom.padding = 10, top.padding = 10)
)
xyplot(Co ~ Date, DF, default.scales = list(y = list(relation = "free")),
ylab = "C", par.settings = par.settings)
trellis.focus("panel", 1, 1, clip.off = TRUE)
pr <- pretty(DF$Fo)
at <- 5/9 * (pr - 32)
panel.axis("right", at = at, lab = pr, outside = TRUE)
grid.text("F", x = 1.1, rot = 90) # right y axis label
trellis.unfocus()
其他提示
巴蒂尔的回答,“你不能在GGPLOT2,”是正确的,如果不完整的。可以说,这不是你的的东西想的做。你如何决定如何缩放Y轴?你想行的意思是一样的吗?范围?有这样做的没有原则的方式,它是太容易做出的成绩看起来像你希望他们看起来像什么。相反,你可能想要做的,尤其是在时间序列这样的东西,是对数据的两行范数,这样在t的特定值,经常分钟(T),Y1 = Y2 = 100下面是一个例子我脱下的 Bonddad博客一>(不使用GGPLOT2,这就是为什么它是太丑了!),但是你可以告诉干净两条线,其中有完全不同的基本标尺的相对增加和减少。
不隶属于 StackOverflow