R ggplot2绘制两个子集
我有一个CSV数据集,如下所示:R ggplot2绘制两个子集,r,ggplot2,graphing,R,Ggplot2,Graphing,我有一个CSV数据集,如下所示: GPU_Config,Job_Num,Stack_Num,Seconds 02_13,2,16double,1106 02_13,4,16double,906.25 02_13,6,16double,914.75 02_13,8,16double,982.5 02_13,10,16double,1013.25 02_13,12,16double,1067.5 02_13,16,16double,1026.25 0_1_2_3,4,16double,959.75
GPU_Config,Job_Num,Stack_Num,Seconds
02_13,2,16double,1106
02_13,4,16double,906.25
02_13,6,16double,914.75
02_13,8,16double,982.5
02_13,10,16double,1013.25
02_13,12,16double,1067.5
02_13,16,16double,1026.25
0_1_2_3,4,16double,959.75
0_1_2_3,8,16double,847.5
0_1_2_3,12,16double,976.5
0_1_2_3,16,16double,972.75
我想绘制两个geom\u smooth()
,每个都使用一个单独的GPU配置类型,02\u 13
和0\u 1\u 2\u 3
。我可以在ggplot()
参数中使用R
的子集方法,如下所示:
ggplot(subset(test, GPU_Config %in% c("02_13", "0_1_2_3")), aes(y = Seconds, x = Job_Num, color = GPU_Config)) + geom_smooth() + geom_point()
但是,这会产生如下图形:
ggplot(subset(test, GPU_Config %in% c("02_13", "0_1_2_3")), aes(y = Seconds, x = Job_Num, color = GPU_Config)) + geom_smooth() + geom_point()
我希望将这两个平滑器分开,以便能够为每个数据子集单独操作每个平滑器(gpu type
)。但是,下面类似的内容不起作用:
ggplot(test, aes(y = Seconds, x = Job_Num)) + geom_smooth(subset(test, GPU_Config %in% c("02_13"))) + geom_smooth(subset(test, GPU_Config %in% c("0_1_2_3"))) + geom_point()
并导致此错误:
Error: Mapping must be created by `aes()` or `aes_()`
谁能帮我把这件事做完吗?注:无论如何,我都不是R专家。如果您还将填充颜色分层,则此功能有效:
ggplot(subset(test, GPU_Config %in% c("02_13", "0_1_2_3"))) +
aes(y = Seconds, x = Job_Num, color = GPU_Config, fill = GPU_Config) +
geom_smooth() +
geom_point()
但是,在所有情况下,您的02_13
配置都会遇到本地安装问题-即使在原始版本中,您的代码也会发出相应的警告。要解决此问题,需要使用不同的平滑方法,例如:
ggplot(subset(test, GPU_Config %in% c("02_13", "0_1_2_3"))) +
aes(y = Seconds, x = Job_Num, color = GPU_Config, fill = GPU_Config) +
geom_smooth(method = lm) +
geom_point()
这将通过GPU\u Config
分离置信区间,如果您绘制ggplot(test[8:11],aes(y=Seconds,x=Job\u Num))+geom\u smooth()
,您将看到ggplot实际上无法为您的第二部分数据获取geom\u smooth()。这些数据只是,与默认平滑方法不兼容?您通常需要在geoms中特别写出数据
参数,因为数据
不是ggplot
中的第一个参数。尝试geom_smooth(数据=子集(…等…)
。错误是因为geom_smooth
中的第一个参数是mapping
,但您给出了一个数据集。当我绘制您编写的图形时,我得到的图形与我的图形相同,只是填充了不同的颜色。(全部为浅蓝色,而不是全部为灰色)。你介意告诉我我的代码到底出了什么问题吗(警告和所有这些/为什么使用不同的平滑方法)?在任何情况下,是否还有一种方法可以让我编写此代码,以便我可以单独编辑每种GPU类型的平滑?(同样不是专家)@antong就像我说的,你不能对你的数据使用黄土平滑-这就是警告告诉你的,这就是为什么你的02_13
配置缺少平滑的置信区间。不同的平滑方法(例如,method=lm
)会消除此错误,但显然会导致根本不同的绘图。@antong您不应该对同一绘图中的数据子集使用不同的平滑方法,这是误导性的(因此ggplot2无法轻松做到)。当然不,我不会使用两种不同的平滑方法,我只是希望将这两种GPU配置分开,因为它们的填充可以有不同的颜色,这样就可以区分这两种配置,但仍然对每个配置使用相同的平滑方法。你是说,如果我尝试使用不同的平滑方法(对所有数据),两个配置将在填充中“分离”,错误将消失?