0

这是这里的后续帖子。

我正在尝试按照以下代码创建一个带有子集数据的多面图。总之,在我的表格中,我想绘制产品 P3 的价格与产品 P1 的价格,并将绘图与版本和颜色进行对比。

刻面不知何故不适用于以下代码,而是所有数据点都在每个刻面中重复。关于如何解决这个问题的任何想法?并获得我在下面附上的“想要的情节”(手动破解的情节)?

library(ggplot2)
product=c("p1","p1","p1","p1","p1","p1","p1","p1","p2","p2","p2","p2","p2","p2","p2","p2","p3","p3","p3","p3","p3","p3","p3","p3","p4","p4","p4","p4","p4","p4","p4","p4")
skew=c("b","b","b","b","a","a","a","a","b","b","b","b","a","a","a","a","b","b","b","b","a","a","a","a","b","b","b","b","a","a","a","a")
version=c(0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2,0.1,0.1,0.2,0.2)
color=c("C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2","C1","C2")
price=c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32)
df = data.frame(product, skew, version, color, price)
# First plot all the data
p1 <- ggplot(df, aes(x=price, y=price, colour=factor(skew))) + geom_point(size=2, shape=19)
p1 <- p1 + facet_grid(version ~ color, labeller = label_both, , scales="free")
p1 
# Second, plot P3 prices vs P1 prices
p2 <- ggplot(df, aes(x=price[product=='p1'], y=price[product=='p3'], colour=factor(skew[product == 'p1']))) + geom_point(size=2, shape=19)
p2 <- p2 + facet_grid(version ~ color, labeller = label_both, , scales="free")
p2

期望的情节应该是:

所需的情节

相反,这就是我得到的 这就是我得到的

4

1 回答 1

2

发生这种情况是因为,正如我在上一个问题中所说,您不应该依赖aes(). 你应该这样做:

library(reshape2)
df1 <- dcast(df,skew+version+color~product,
             fun.aggregate = sum,
             value.var = "price")
ggplot(df1,aes(x = p1,y = p3,colour = factor(skew))) +
  facet_grid(version~color) +
  geom_point(size = 2,shape = 19)
于 2013-11-19T04:07:19.613 回答