Как построить две линии по коэффициенту в решетчатом графе? - PullRequest
3 голосов
/ 28 июля 2011

Определение:

df <- data.frame(
        line1 = rep(seq(1,5,by=1),2), 
        line2 = rep(seq(2,6,by=1),2),
        index = rep(seq(1,5,by=1),2),
        factor=rep(c("a","b"),each=5))

, где line1 и line2 - две переменные, скажем, рост и вес.

Это простой стиль, который я хотел бы для каждой панели (я также хотел бы изменить размер маркеров точек, но не использовать как):

plot(df$line1[df$factor=="a"], type = "o", ylim=c(0,6))
lines(df$line2[df$factor=="a"], type = "o", lty=2, pch=0)

Когда я пытаюсь это сделать:

library(lattice)
xyplot(c(line1,line2)~index|factor,data=df,type="o")

программа обрабатывает все точки, как если бы они принадлежали одной строке.

Кроме того, я не уверен, как указать аргументы для стиля печати, чтобы получить желаемые результаты.

PS1. Удивительно, но я погуглил и нашел множество графиков рассеяния (с линейными подгонками, плотностями и т. Д.) И примеры гистограмм решетчатых графов, но не одну из простых вещей, которые я пытаюсь сделать.

PS2. Я хотел бы отметить этот вопрос trellis, но у меня нет очков репутации для создания тега. Есть добровольцы?

Ответы [ 2 ]

7 голосов
/ 28 июля 2011

Ответ на самом деле очень прост. Вместо объединения line1 и line2 в вектор, просто используйте расширенный интерфейс формул xyplot:

xyplot(line1+line2~index|factor,data=df,type="o")

дает:

enter image description here

Проверьте также ?xyplot Прочитайте кучи текста и поиграйте с примерами там. Вы узнаете, как настроить это с названиями, легендами и подобными.

Как вы пометили ggplot2, это одна из возможностей сделать это с этим пакетом:

require(ggplot2)
require(reshape)
df2 <- melt(df,id=c("index","factor"))

qplot(index,value,variable,facets = .~factor ,
          data=df2,geom="line",colour=variable)

Дает:

enter image description here

2 голосов
/ 28 июля 2011

В качестве альтернативы вы можете растопить данные и использовать group:

library(reshape)
df2 <- melt(df,id.var=3:4)
xyplot(value~index|factor,data=df2,type="o",group=variable)
...