Как использовать общую ось для трех похожих графиков времени / значения - PullRequest
3 голосов
/ 24 мая 2011

У меня есть три серии измерений с временными метками, взятые за один и тот же интервал, но с разными фактическими временными метками.Я хотел бы показать эти три траектории в комбинированном графике, но поскольку ось x (временные метки) различна в каждом случае, у меня возникают некоторые проблемы.Есть ли способ сделать это без выбора оси x для использования и интерполяции значений y для двух других серий измерений?Я довольно новичок в R, но я чувствую, что есть нечто очевидное, что я упускаю из виду.

Например:

Серия 1

Time    Value
1.023   5.786
2.564   10.675
3.678   14.678
5.023   17.456

Серия 2

0.787   1.765
1.567   3.456
3.011   5.879
4.598   7.768

Серия 3

1.208   3.780
2.478   6.890
3.823   9.091
5.125   12.769

Ответы [ 4 ]

5 голосов
/ 24 мая 2011

С базовой графикой вы можете использовать комбинацию plot и points или lines:

dat1 <- data.frame(Time = c(1.023, 2.564, 3.678, 5.023), Value = c(5.786, 10.675, 14.678, 17.456))
dat2 <- data.frame(Time = c(0.787, 1.567, 3.011, 4.598), Value = c(1.765, 3.456, 5.879, 7.768))
dat3 <- data.frame(Time = c(1.208, 2.478, 3.823, 5.125), Value = c(3.780, 6.890, 9.091, 12.769))

with(dat1, plot(Time, Value, xlim = c(0,6), ylim = c(0,20)))
with(dat2, points(Time, Value, col = "red"))
with(dat3, points(Time, Value, col = "green"))

Взгляните на ?legend, чтобы добавить легенду. Или выучите ggplot2 и позвольте ему справиться с этой частью:

library(ggplot2)
library(reshape)
plotdata <- melt(list(dat1 = dat1, dat2 = dat2, dat3 = dat3), "Time")

qplot(Time, value, data = plotdata, colour = L1)
3 голосов
/ 25 мая 2011

Попробуйте это:

t1 <- "Time Value
1.023   5.786
2.564   10.675
3.678   14.678
5.023   17.456"

t2 <- "Time Value
0.787   1.765
1.567   3.456
3.011   5.879
4.598   7.768"

t3 <- "Time Value
1.208   3.780
2.478   6.890
3.823   9.091
5.125   12.769"

tex1 <- read.table(textConnection(t1), header = TRUE)
tex2 <- read.table(textConnection(t2), header = TRUE)
tex3 <- read.table(textConnection(t3), header = TRUE)

plot(tex1, type="l", xlim=range(tex1$Time, tex2$Time, tex3$Time), ylim=range(tex1$Value, tex2$Value, tex3$Value), main="Common Time Axis for 3 Data Series", col="black")
grid()
lines(tex2, col="red")
lines(tex3, col="blue")

enter image description here

1 голос
/ 24 мая 2011

Без дополнительной информации кажется, что вам придется использовать комбинацию: points и xlim.
Построить одну комбинацию точек (или линий), используя plot, передаваяаргумент xlim, чтобы все ваши временные данные могли уместиться на графике.
Затем используйте points или lines, чтобы добавить другие данные на график, и, возможно, передать параметр color в этифункции также, чтобы различать выходы.
Мы можем предоставить более подробную информацию, если вы включите минимальный воспроизводимый пример!

0 голосов
/ 25 мая 2011

Вычтите минимальное значение времени в каждой серии. Определите максимум из трех результатов как xlim [2]. Составьте график с использованием matplot с подавлением меток, а затем добавьте ваши метки = и at = с помощью оси ().

...