2013-09-10 2 views
2

Я пытаюсь создать диаграммы рассеяния с использованием данных B и C, однако я хотел бы создать разницу разброса для каждой категории в А.R: Создание нескольких категоризированы диаграммы рассеяния от одного dataframe

A   B C 
Monday  2 4 
Tuesday  4 2 
Monday  3 5 
Wednesday 3 10 
Friday  7 9 

Этот это код, который я сейчас использую, чтобы просто сделать обычный график рассеяния с моими данными. Есть ли дополнение или что-то, что я могу использовать для автоматического создания диаграмм рассеяния на основе категории?

attach(data) 
plot(C, B, main="scatterplots",xlab="C", ylab="B", pch=10) 
abline(lm(C~B), col="red") 
+1

Я подозреваю, что это игрушка пример, но я вынужден отметить, что 'присоединять() 'не рекомендуется в R, и вам потребуется больше, чем 1 BC пара в день, чтобы диаграммы рассеяния были значимыми, возможно, другой сюжет более уместен. – gung

+0

@gung; это не мой реальный набор данных, но я хотел проиллюстрировать свою точку зрения. Я видел attach() во множестве примеров скриптов, которые я рассматривал для графического отображения, вместо этого у вас есть рекомендуемый способ? – Mengll

+0

проверить эту тему: [in-r-do-you-use-attach-or-call-variables-by-name-or-slicing?] (Http://stackoverflow.com/questions/1310247/) – gung

ответ

3

Это может быть решение:

par(mfrow=c(1, length(levels(A)))) 
for (day in levels(A)){ 
    subs <- subset(data, A==day) 
    plot(subs$C, subs$B, main=day) 
    abline(lm(C~B), col="red") 
} 

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

+0

Спасибо! Я создал диаграммы рассеяния, которые мне нужны. Тем не менее, они очень смущены. Полагаю, это то, что вы имеете в виду, регулируя значения lim? – Mengll

+0

Это потому, что код отображает все четыре графика в одной строке. Вы можете изменить размер окна построения вручную или создать графики в разных окнах, используя, например, команду 'x11'. Когда вы сохраняете графики с помощью 'jpeg' или' pdf', вы также можете указать ширину и высоту. – user1981275

3

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

library(lattice) 
xyplot(B~C|A, data=data, type=c('p','r')) 

Пакет ggplot2 также делает это с помощью огранка:

library(ggplot2) 
qplot(C, B, data=data, facets= A ~ .) + geom_smooth(method='lm') 
+0

Это прекрасно работает, и сам график выглядит очень хорошо! Спасибо за код. – Mengll

Смежные вопросы