pairs() 类变量图

发布于 2024-11-29 05:51:59 字数 405 浏览 1 评论 0原文

我想知道是否可以使用对图(或此类函数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 vs B、A vs C 和 B vs C仅适用于预测值或实际值,或者可能两者都在同一绘图上。

我有 70 个类变量,而不是本示例中的 3 个,因此不想更改为宽格式。我更愿意将它们绘制为类变量并保留它们的名称,例如本例中的 A、B、C。

I am wondering if it is possible to use pair plot (or such function ggplot) to plot pairs of a class variable, e.g.

#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")

I want to plot State_CD A vs B, A vs C and B vs C either just for Predicted_value or Actual-value or may be both on same plot.

I have 70 class variables instead of 3 in this example, and so don't want to change to wide format. I'd prefer if I could plot them as class variable and keep their names such as A, B, C in this example.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

缘字诀 2024-12-06 05:51:59
ddbind <- do.call(cbind, split(dd, dd$State_CD)  )
pairs(ddbind[,grep("Pred", names(ddbind) )] )
pairs(ddbind[,grep("Act", names(ddbind) )] )

pairsplot

ddbind <- do.call(cbind, split(dd, dd$State_CD)  )
pairs(ddbind[,grep("Pred", names(ddbind) )] )
pairs(ddbind[,grep("Act", names(ddbind) )] )

pairsplot

胡渣熟男 2024-12-06 05:51:59

我不太确定为什么你需要在这里成对。小倍数方法怎么样:

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

I'm not really sure why you need pairs here. What about a small multiples approach:

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

ggplot geom_point

Reading through the question, if you've got 72 groups you're going to need to do some sort of summary operation and use a different type of plot. A dotplot of the means would be great for this

Dotplot:

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

空名 2024-12-06 05:51:59

这不使用 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

这根本不是一个优雅的解决方案,但它应该为你工作...

This doesn't use ggplot but you can do something like this:

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

This is not at all an elegant solution but it should work for you...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文