我一直在尝试两者 ggplot2lattice 绘制数据面板。我有点难以集中注意力 ggplot2 模型。特别是,如何在每个面板上绘制包含两组数据的散点图:

lattice 我可以这样做:

xyplot(Predicted_value + Actual_value ~ x_value | State_CD, data=dd)

这将为我的每个 State_CD 提供一个面板,每列

我可以做一栏 ggplot2:

pg <- ggplot(dd, aes(x_value, Predicted_value)) + geom_point(shape = 2) 
      + facet_wrap(~ State_CD) + opts(aspect.ratio = 1)
print(pg)

我无法理解的是如何将 Actual_value 添加到上面的 ggplot 中。

编辑 哈德利指出,如果有一个可重复的例子,这确实会更容易。这是似乎有效的代码。有没有更好或更简洁的方法来使用 ggplot 来做到这一点?为什么向 ggplot 添加另一组点的语法与添加第一组数据的语法如此不同?

library(lattice)
library(ggplot2)

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

#plot with lattice
xyplot(Predicted_value + Actual_value ~ x_value | State_CD, data=dd)

#plot with ggplot
pg <- ggplot(dd, aes(x_value, Predicted_value)) + geom_point(shape = 2) + facet_wrap(~ State_CD) + opts(aspect.ratio = 1)
print(pg)

pg + geom_point(data=dd,aes(x_value, Actual_value,group=State_CD), colour="green")

晶格输出如下所示:alt text
(来源: Brainmastication.com)

ggplot 看起来像这样:alt text
(来源: Brainmastication.com)

有帮助吗?

解决方案

刚上什么伊恩建议跟进:为GGPLOT2你真的想在一列中的所有y轴的东西与另一列作为指示要如何装饰它的一个因素。这是很容易与melt做到这一点。即:

qplot(x_value, value, 
      data = melt(dd, measure.vars=c("Predicted_value", "Actual_value")), 
      colour=variable) + facet_wrap(~State_CD)

下面是它看起来像我: “替代文字” 结果 <子>(来源: princeton.edu

要得到一个什么样melt其实就是做一个想法,这里的头:

> head(melt(dd, measure.vars=c("Predicted_value", "Actual_value")))
     x_value State_CD        variable      value
1  1.2898779        A Predicted_value  1.0913712
2  0.1077710        A Predicted_value -2.2337188
3 -0.9430190        A Predicted_value  1.1409515
4  0.3698614        A Predicted_value -1.8260033
5 -0.3949606        A Predicted_value -0.3102753
6 -0.1275037        A Predicted_value -1.2945864

您看,这“融化” Predicted_value和Actual_value成一个名为value并添加名为variable另一列让你知道什么样的列它最初是从哪里来的。

其他提示

更新:几年过去了,我几乎总是使用乔纳森的方法(通过 提迪尔包)与ggplot2。我下面的答案在紧要关头有效,但当你有 3 个以上的变量时,它很快就会变得乏味。


我确信哈德利会有一个更好的答案,但是 - 语法不同,因为 ggplot(dd,aes()) 语法(我认为)主要用于仅绘制一个变量。对于两个,我会使用:

ggplot() + 
geom_point(data=dd, aes(x_value, Actual_value, group=State_CD), colour="green") + 
geom_point(data=dd, aes(x_value, Predicted_value, group=State_CD), shape = 2) + 
facet_wrap(~ State_CD) + 
theme(aspect.ratio = 1)

从 ggplot() 中取出第一组点,其语法与第二组点相同。我发现这更容易处理,因为语法是相同的,并且它强调了 ggplot2 核心的“图形语法”。

你可能只是想改变你的数据一点点的形式,让你有一个y轴变量,一个额外因素变量,指示它是否是一个预测的或实际的变量。

这是不是像你正在尝试做的?

dd<-data.frame(type=rep(c("Predicted_value","Actual_value"),20),y_value=rnorm(40),
                x_value=rnorm(40),State_CD=rnorm(40)>0)
qplot(x_value,y_value,data=dd,colour=type,facets=.~State_CD)

发布我遇到这个问题好后[R帮助线程可能已经帮助了我。它看起来像我可以做到这一点:

 pg + geom_line(data=dd,aes(x_value, Actual_value,group=State_CD), colour="green") 

是一个做事的好方法吗?很奇怪我,因为增加的第二个项目有一个完全不同的语法比第一。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top