简介
盒形图是一种有用的可视化技术,可以了解数据集的分布和异常值。在这篇文章中,我们将通过R的ggplot2函数的箱形图教程,这是一个流行的可视化包。我们将首先了解ggplot2函数geom_boxplot()中的boxplot的语法,然后看到各种例子,以便初学者容易理解。
ggplot2中箱形图的语法
在ggplot2中创建箱形图的最小语法是
ggplot(, mapping = aes()) + geom_boxplot()
你可以通过添加更多的主题层、实验层等来创建复杂的boxplot,从而轻松地在ggplot2中定制箱型图。
ggplot2中箱形图的例子
加载数据集
在ggplot2的所有例子中,我们将使用Tips数据集,该数据集给出了餐馆中顾客支付的小费信息。
让我们先在数据框df中加载这个数据集,看看其中的一些记录。
In[0]:
library(ggplot2)
df <- read.table("tips.csv",header=TRUE,sep=',')
options( warn = -1 )
head(df)
Out[0]:
| 总帐 | 小费 | 性别 | 吸烟者 | 天 | 时间 | 尺寸 |
|---|---|---|---|---|---|---|
| 16.99 | 1.01 | 女性 | 没有 | 太阳 | 晚餐 | 2 |
| 10.34 | 1.66 | 男性 | 没有 | 太阳 | 晚餐 | 3 |
| 21.01 | 3.50 | 男性 | 没有 | 太阳 | 晚餐 | 3 |
| 23.68 | 3.31 | 男性 | 没有 | 太阳 | 晚餐 | 2 |
| 24.59 | 3.61 | 女性 | 没有 | 阳光 | 晚餐 | 4 |
| 25.29 | 4.71 | 男性 | 没有 | 阳光 | 晚餐 | 4 |
例子1:ggplot2中的基本箱形图
首先,我们将把我们的数据集'df'以及'sex'和'total_bill'作为我们的x和y属性传递给ggplot()。
然后,我们添加第二层geom_boxplot()来创建boxplot,这是相当基本和简约的。
In[1]:
# Basic box plot
ggplot(df, aes(x=sex, y=total_bill)) +
geom_boxplot()
Out[1]:

例2:ggplot2中的水平箱形图
为了在ggplot2中创建一个水平盒式图,我们使用coord_flip()函数将盒式图旋转90度,如下所示。
In[2]:
ggplot(df, aes(x=sex, y=total_bill)) +
geom_boxplot() + coord_flip()
输出[2]:

例三:凹槽箱形图
在缺口箱形图中,中位数周围有一个缺口,显示中位数周围的置信区间。
置信区间是一个围绕特定值的范围,在一定的概率下(如95%),应该包含该统计量的真实值(群体值)。
要创建带有缺口的箱形图,只需向geom_boxplot()函数传递参数notch=True。
In[3]:
ggplot(df, aes(x=sex, y=total_bill)) +
geom_boxplot(notch=TRUE)
Out[3]:

例四:改变离群值的形状
你可以通过在geom_boxplot()中使用离群值的各种属性来改变离群值的颜色、形状和大小,如下面的例子中所示。
In[4]:
ggplot(df, aes(x=day, y=total_bill)) +
geom_boxplot(outlier.colour="red", outlier.shape=8,
outlier.size=4)
Out[4]:

例5:带点状图的箱形图
我们可以使用函数geom_dotplot()或geom_jitter()在箱形图中添加点(或点)。
In[5]:
ggplot(df, aes(x=sex, y=total_bill)) +
geom_boxplot()+ geom_dotplot(binaxis='y', stackdir='center', dotsize=0.5)
Out[5]:
`stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.

例6:根据组别给箱形图添加颜色
为了增加一些美感,我们可以根据它们所代表的组来改变我们的boxplots的颜色。在这里,我们是根据星期几来隔离boxplots的。我们使用填充命令来做这件事。
In[6]:
ggplot(df, aes(x=day, y=total_bill, fill=day)) +
geom_boxplot()
Out[6]:

例7:用scale_fill_manual()给boxplot应用自定义颜色
对于手动应用自定义颜色到boxplot,可以使用scale_fill_manual来定义调色板,如下所示。
In[7]:
# Use custom color palettes
ggplot(df, aes(x=day, y=total_bill, fill=day)) +
geom_boxplot()+scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9",'#D43F3A'))
Out[7]:

例8:用scale_fill_brewer()给boxplot应用自定义颜色
ggplot2的boxplot也可以用scale_fill_brewer()通过传递brewer调色板来覆盖。在下面的例子中,使用了Dark2调色板。
In[8]:
ggplot(df, aes(x=day, y=total_bill, fill=day)) +
geom_boxplot()+scale_fill_brewer(palette="Dark2")
Out[8]:

例9:用scale_fill_grey()对箱形图应用灰度。
如下图所示,可以用 scale_fill_grey()来创建一个灰度箱形图。
In[9]:
ggplot(df, aes(x=day, y=total_bill, fill=day)) +
geom_boxplot() + scale_fill_grey() + theme_classic()
输出[9]:

例10:为盒式图应用轮廓颜色
为了给方格图的轮廓添加颜色,可以使用颜色参数,如下图所示。
在[10]中:
ggplot(df, aes(x=day, y=total_bill, color=day)) +
geom_boxplot() +
theme_classic()
Out[10]:

例11:将图例位置改为顶部
我们可以改变图例的位置,把它放在方便的地方,可以是顶部,也可以是底部,我们甚至可以用 legend.position 选项把它完全删除。
在下面的例子中,图例被放置在顶部。
In[11]:
ggplot(df, aes(x=day, y=total_bill, fill=day)) +
geom_boxplot() + theme(legend.position="top")+ scale_fill_brewer(palette="YlGnBu")
Out[11]:

在下面的例子中,图例被放置在底部。
在[12]中:
ggplot(df, aes(x=day, y=total_bill, fill=day)) +
geom_boxplot()+ theme(legend.position="bottom")+scale_fill_brewer(palette="Pastel1")
Out[12]:

In[13]:
ggplot(df, aes(x=day, y=total_bill, fill=day)) +
geom_boxplot() + theme(legend.position="none")+scale_fill_brewer(palette="Pastel2")
Out[13]:

例12:带有多个组的箱形图
通过在geom_boxplot()中使用aeS的填充选项,也可以在箱形图中添加多个组,如下所示。
In[15]:
ggplot(df, aes(x=sex, y=total_bill)) +
geom_boxplot(aes(fill =day)) +
theme_classic()+scale_fill_brewer(palette="Set2")
Out[15]:

- 还可以阅读 - ggplot2中的热图教程及实例