在R或RStudio中创建并排Boxplot(按值分组)

时间:2017-04-16 22:15:51

标签: r boxplot

我要做的是生成2个并排的箱形图,这些框图由值分隔。所以基本上我有一个名为exo的数据框。该表包括称为mass_jupiter的字段(其为650个值为0.0001-10的表)orbital_period_days(其为值为0.0001-7000或其他的表)和planet_name。我想找出如何生成两个并排的箱形图,将质量大于1的行星的轨道运行时间与质量小于1的行星的轨道运行时间进行比较。

我该怎么做?我试过> boxplot(exo" dollarsign" orbital_period_days~exo $ mass_jupiter)但这只给了我650个微小的箱形图,每个不同的质量值。

如果将大于1且小于1的两个并排箱图分组,我该如何将其分组?

然后我感到沮丧并试图创建名为largeexos和smallexos的数据子集,在那里我将所有数据分成两个子集。但是,我无法找到一种方法可以将两者都放在彼此相邻的盒子图上。还有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

 boxplot(orbital_period_days~mass_jupiter>1,exo)

应该这样做

这是一个小示例数据集(您应该提供一个):

exo <- structure(list(mass_jupiter = c(0.996, 0.002, 0.827, 2.11, 0.008, 
0.012, 0.2, 1.839, 0.008, 0.299, 0.322, 0.002, 9.904, 0.635, 
0.088), orbital_period_days = c(3.443, 0.002, 1.657, 6749.824, 
0.032, 0.007, 2.207, 1.495, 0.002, 0.574, 98.317, 0, 5.918, 24.229, 
0.002)), .Names = c("mass_jupiter", "orbital_period_days"), row.names = c(NA, 
-15L), class = "data.frame")

par(mfrow=c(1,2))
boxplot(orbital_period_days~mass_jupiter>1,exo,boxwex=.5)
boxplot(orbital_period_days~mass_jupiter>1,exo,boxwex=.5,log="y")
par(mfrow=c(1,1))

这会产生:

two pairs of side-by-side boxplots, one on log scale

第二个轴是按比例缩放的(考虑到您的数据可能是明智的)

当然,您要设置标题,标签等等,但这是基本想法。