gpt4 book ai didi

r - 如何逐步将数据框的子集添加到ggplot中

转载 作者:行者123 更新时间:2023-12-02 00:02:27 24 4
gpt4 key购买 nike

我有一个要绘制的数据框,但它太大以至于绘图有点困惑,我想逐步构建它以便可视化和比较步骤。

这是一些虚拟数据:

 V1<-rnorm(50)
V2<-rnorm(50)
V3<-c(rep("A",10),rep("B",10),rep("C",10),rep("D",10),rep("E",10))
V4<-V2+.1
DF<-data.frame(V1,V2,V3,V4)

我的剧情代码是这样的:

ggplot(DF,aes(x=V1,y=V2,size=V4,label=DF$V3),legend=FALSE)+
scale_y_continuous( limits = c(-3, 3))+
scale_x_continuous( limits = c(-3, 3))+
geom_point(color="black",fill='red',shape=21)+
geom_text(size=2)+theme_bw()+
scale_size(range = c(5, 20))

它具有我想要的所有美学,但看起来太困惑了。所以我按字符变量分解数据框,这将是我感兴趣的变量。

S<-split(DF,DF$V3)

现在理想情况下,我想从一个空白图开始,然后逐步添加 A、B、C、D 和 E 的数据,这样我就可以打印出每一步。每个图都具有相同的美学,并从 V4 绘制尺寸,从 V3 绘制标签。

我尝试在图层上添加连续的 geom_point 添加,如下所示:

ggplot(DF,aes(x=V1,y=V2,size=V4))+
scale_y_continuous( limits = c(-3, 3))+
scale_x_continuous( limits = c(-3, 3))+
theme_bw()+
geom_blank()+

geom_point(data=S$"A",color="black",fill='red',shape=21)+
aes(label=S$'A')+
geom_text(size=2)+
scale_size(range=c(5,20))+

geom_point(data=S$'B',color="black",fill='red',shape=21)+
aes(label=S$'B')+
geom_text(size=2)+
scale_size(range=c(5,20))

如果我只是将它留在 A 和 B 的 geom_point 的第一行,这会起作用,但是一旦我开始添加标签和其他细节,我很快就会出错。

最佳答案

您可以绘制第一个子集并将其存储为对象。

p<-ggplot(S$A,aes(x=V1,y=V2,size=V4,label=V3),legend=FALSE)+
scale_y_continuous( limits = c(-3, 3))+
scale_x_continuous( limits = c(-3, 3))+
geom_point(color="black",fill='red',shape=21)+
geom_text(size=2)+theme_bw()+
scale_size(range = c(5, 20))

然后使用 %+% 更新您的绘图。第二个例子中的do.call()用于从列表元素中获取一个数据框。

#to replace subset A with subset B
p %+% S$B

#to replace subset A with first three subsets
p %+% do.call(rbind,S[1:3])

关于r - 如何逐步将数据框的子集添加到ggplot中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20458643/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com