ggplot2 绘制两个子集
ggplot2 graphing two subsets
我有一个如下所示的 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_smooth()
的图表,每个使用不同类型的 GPU_Config
、02_13
和 0_1_2_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()
但是,这会导致图表如下所示:
我希望将两个平滑器分开,以便能够针对每个数据子集单独操作每个平滑器 (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 专家。
如果您还对 fill
颜色进行分层,它会起作用:
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_Config
。
我有一个如下所示的 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_smooth()
的图表,每个使用不同类型的 GPU_Config
、02_13
和 0_1_2_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()
但是,这会导致图表如下所示:
我希望将两个平滑器分开,以便能够针对每个数据子集单独操作每个平滑器 (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 专家。
如果您还对 fill
颜色进行分层,它会起作用:
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_Config
。