нарисовать один или несколько графиков в одном окне - PullRequest
4 голосов
/ 15 декабря 2010

Я хочу сравнить две кривые, возможно ли с помощью R нарисовать график, а затем нарисовать еще один график поверх него?как?

спасибо.

Ответы [ 6 ]

5 голосов
/ 15 декабря 2010

С помощью базы R вы можете построить свою кривую, а затем добавить вторую кривую с аргументом lines().Вот краткий пример:

x <- 1:10
y <- x^2
y2 <- x^3

plot(x,y, type = "l")
lines(x, y2, col = "red")

В качестве альтернативы, если вы хотите использовать ggplot2, вот два метода: один рисует разные цвета на одном графике, а другой создает отдельные графики для каждой переменной.Хитрость заключается в том, чтобы сначала «растопить» данные в длинном формате.

library(ggplot2)

df <- data.frame(x, y, y2)

df.m <- melt(df, id.var = "x")

qplot(x, value, data = df.m, colour = variable, geom = "line")

qplot(x, value, data = df.m, geom = "line")+ facet_wrap(~ variable)
4 голосов
/ 15 декабря 2010

Использование решетчатого пакета :

require(lattice)
x <- seq(-3,3,length.out=101)
xyplot(dnorm(x) + sin(x) + cos(x) ~ x, type = "l") 

Lattice curve plot

2 голосов
/ 15 декабря 2010

Там уже было несколько решений для вас.Если вы остаетесь с базовым пакетом, вам следует ознакомиться с функциями plot(), lines(), abline(), points(), polygon(), segments(), rect(), box(), arrows(), ... Взгляните на их справочные файлы.

Вы должны увидеть график из базового пакета в виде панели с координатами, которые вы ему дали,На этой панели вы можете нарисовать целый набор объектов с вышеупомянутыми функциями.Они позволяют вам построить график, как вы хотите.Однако вы должны помнить, что если вы не играете с настройками номинала, как показывал доктор Г., каждый вызов plot () дает вам новую панель.Также примите во внимание, что вещи могут быть построены поверх других вещей, поэтому подумайте о порядке, который вы используете для печати вещей.

См. Например:

set.seed(100)
x <- 1:10
y <- x^2
y2 <- x^3
yse <- abs(runif(10,2,4))

plot(x,y, type = "n")  # type="n" only plots the pane, no curves or points.

# plots the area between both curves
polygon(c(x,sort(x,decreasing=T)),c(y,sort(y2,decreasing=T)),col="grey")
# plot both curves
lines(x,y,col="purple")
lines(x, y2, col = "red")
# add the points to the first curve
points(x, y, col = "black")
# adds some lines indicating the standard error
segments(x,y,x,y+yse,col="blue")
# adds some flags indicating the standard error
arrows(x,y,x,y-yse,angle=90,length=0.1,col="darkgreen")

Это дает вам:

alt text

1 голос
/ 15 декабря 2010

ggplot2 - отличный пакет для такого рода вещей:

install.packages('ggplot2')
require(ggplot2)
x <- 1:10
y1 <- x^2
y2 <- x^3
df <- data.frame(x = x, curve1 = y1, curve2 = y2)
df.m <- melt(df, id.vars = 'x', variable_name = 'curve' )
# now df.m is a data frame with columns 'x', 'curve', 'value'
ggplot(df.m, aes(x,value)) + geom_line(aes(colour = curve)) + 
geom_point(aes(shape=curve))

Вы получаете график, раскрашенный кривой, с разными пионтными метками для каждой кривой и хорошей легендой, все безболезненно без каких-либо дополнительныхработа:

alt text

1 голос
/ 15 декабря 2010

Посмотрите на номинал

> ?par
> plot(rnorm(100))
> par(new=T)
> plot(rnorm(100), col="red")
0 голосов
/ 15 декабря 2010

Нарисуйте несколько кривых одновременно с помощью функции matplot. Помогите (матплот) для большего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...