Раскраски точек вместо линий во взаимодействии.plot (R) I - PullRequest
0 голосов
/ 21 февраля 2012

Я хочу построить график взаимодействия в R, как в примере

http://www.ling.upenn.edu/~joseff/rstudy/week4.html#interactionplot

за исключением того, что вместо окраски линий я хочу покрасить точки некоторым атрибутом, отличным от числа. Желаемый функционал будет выглядеть как

blood_pressure = ...  # this will be the x-axis
age_bucket = ... # this will be the interaction-level
gender = ... # color boys blue, girls red
stroke_rate = ... # y-axis

interaction.plot(blood_pressure, age_bucket, stroke_rate, col=gender, type="b"...

За исключением цвета = пол на самом деле делает то, что я хочу

1 Ответ

1 голос
/ 21 февраля 2012

Проблема заключается в том, что interaction.plot фактически использует tapply() для вычисления агрегированных суммарных показателей (среднее или медианное). Поскольку interaction.plot просто вызывает matplot, вы можете использовать последнее напрямую, если хотите, или суммировать свои данные с помощью plyr и отображать результаты с помощью ggplot2 (более гибко).

# consider the 64x4 dataset OrchardSprays and create a fake
# two-levels factor, say grp, which is in correspondence to rowpos odd/even values
grp <- gl(2, 1, 8, labels=letters[1:2])
# the following won't work (due to color recycling)
with(OrchardSprays, 
     interaction.plot(treatment, rowpos, decrease, 
                      type="b", pch=19, lty=1, col=as.numeric(colpos), legend=F))
# what is used to draw the 8 lines is computed from
with(OrchardSprays, 
     tapply(decrease, list(treatment=treatment, rowpos=rowpos), mean))
# the following will work, though
with(OrchardSprays, 
     interaction.plot(treatment, rowpos, decrease, 
                      type="b", pch=19, lty=1, col=as.numeric(grp), legend=F))

Короче говоря, предполагая, что вы можете найти адекватное отображение между gender и вашим коэффициентом трассировки (age_bucket), вам нужно построить вектор цветов размером nlevels(age_bucket).

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