pair () график переменных класса - PullRequest
2 голосов
/ 14 августа 2011

Мне интересно, возможно ли использовать парный график (или такую ​​функцию ggplot) для построения пар переменных класса, например,

#make some example data
dd<-data.frame(matrix(rnorm(108),36,2),c(rep("A",24),rep("B",24),rep("C",24)))
colnames(dd) <- c("Predicted_value", "Actual_value", "State_CD")

Я хочу построить State_CD A против B, A против C и B против C либо только для Predicted_value, либо для Actual-value, либо они могут быть на одном графике.

У меня 70 переменных класса вместо 3 в этом примере, и поэтому я не хочу переходить на широкоформатный формат. Я бы предпочел, чтобы я мог отобразить их как переменные класса и сохранить их имена, такие как A, B, C, в этом примере.

Ответы [ 3 ]

2 голосов
/ 14 августа 2011
ddbind <- do.call(cbind, split(dd, dd$State_CD)  )
pairs(ddbind[,grep("Pred", names(ddbind) )] )
pairs(ddbind[,grep("Act", names(ddbind) )] )

pairsplot

1 голос
/ 14 августа 2011

Я не совсем уверен, зачем вам нужны пары здесь.А как насчет подхода с несколькими кратными:

library(ggplot2)
p <- ggplot( dd, aes(Predicted_value,Actual_value) )
p + geom_point() + facet_wrap(~State_CD) + geom_smooth(method="lm")

ggplot geom_point

Прочитав вопрос, если у вас есть 72 группы, вам понадобится выполнить какую-то сводную операциюи использовать другой тип сюжета.Для этого

будет точечный график средних средств:

dd<-data.frame(pred=rnorm(130),act=rnorm(130),state=rep(LETTERS,each=5) )
library(lattice)
library(plyr)
dd.m <- melt(dd)
dd.p <- ddply( dd.m, .(state, variable), function(x) mean(x$value) )
dd.p$color = c("red","blue")[as.integer(dd.p$variable)]
dotplot( dd.p$state ~ dd.p$V1, group= dd.p$variable )

dotplot

0 голосов
/ 14 августа 2011

Это не использует ggplot, но вы можете сделать что-то вроде этого:

states = unique(dd$State_CD)
par(mfrow=c(1,3))
for (i in 1:length(states)){
  if (i != length(states)){
    for(j in (i+1):length(states)){
      plot(dd$Predicted_value[which(dd$State_CD == states[i])],
           dd$Predicted_value[which(dd$State_CD == states[j])],
           xlab=paste(states[i]),ylab=paste(states[j]))
      }
   }
}

plot

Это совсем не элегантное решение, но оно должно работать для вас ...

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