R ggplot2绘制两个子集

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

我有一个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
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配置分开,因为它们的填充可以有不同的颜色,这样就可以区分这两种配置,但仍然对每个配置使用相同的平滑方法。你是说,如果我尝试使用不同的平滑方法(对所有数据),两个配置将在填充中“分离”,错误将消失?