简介
在本教程中,我们将向你展示如何使用ggplot2在R中制作一个小提琴图,ggplot2是一个流行的、易于使用的软件包,用于在R中创建令人惊叹的图形和可视化效果。
ggplot2中的小提琴图的语法
在ggplot2中,生成小提琴图的最小语法是 --
ggplot(, mapping = aes())+ geom_violin()
你可以通过添加更多的层次来进一步定制小提琴图,比如主题、实验室等。
在R中使用ggplot2绘制小提琴图的例子
加载数据集
我们将把'ford.csv'数据集读入一个叫做df的数据框中
In[0]:
df <- read.table("ford.csv",header=TRUE,sep=',')
options( warn = -1 )
head(df)
Out[0]:
| 模型 | 年份 | 价格 | 传动装置 | 里程数 | 燃料类型 | 税 | mpg | 发动机尺寸 |
|---|---|---|---|---|---|---|---|---|
| 菲斯塔 | 2017 | 12000 | 自动驾驶 | 15944 | 汽油 | 150 | 57.7 | 1.0 |
| 焦点 | 2018 | 14000 | 指南 | 9083 | 汽油版 | 150 | 57.7 | 1.0 |
| 焦点 | 2017 | 13000 | 手动 | 12456 | 汽油 | 150 | 57.7 | 1.0 |
| 菲斯塔 | 2019 | 17500 | 手动 | 10460 | 汽油 | 145 | 40.3 | 1.5 |
| 菲斯塔 | 2019 | 16500 | 自动挡 | 1482 | 汽油 | 145 | 48.7 | 1.0 |
| 菲斯塔 | 2015 | 10500 | 手动挡 | 35432 | 汽油 | 145 | 47.9 | 1.6 |
加载ggplot2
首先,让我们加载ggplot2库,如下所示。
在[1]中:
library(ggplot2)
例子1 - ggplot2中的基本小提琴图
在下面的例子中,我们使用geom_violin()在ggplot2中绘制最基本的小提琴图,通过传递数据集以及x和y的属性映射。
In[1]:
# Basic violin plot
ggplot(df, aes(x=transmission, y=price)) + geom_violin()
输出[1]:

例2--ggplot2中的水平小提琴图
我们可以通过使用coord_flip()层在ggplot2中制作一个水平小提琴图。在下面的例子中,我们将小提琴图(我们在上一个例子中创建的)翻转为水平图。
In[2]:
ggplot(df, aes(x=transmission, y=price)) + geom_violin() + coord_flip()
输出[2]:

例3--带Bowxplot的小提琴图
有时,在小提琴图中加入一个膨胀图是很有用的,可以清楚地了解数据的分布和它的汇总统计。为了达到这个目的,我们可以简单地在geom_ violin()中加入一层geom_boxplot()
In[3]:
ggplot(df, aes(x=transmission, y=price)) + geom_violin()+ geom_boxplot()
Out[3]:

例4--用scale_fill_brewer()给小提琴图添加颜色
让我们为我们的Violin图添加颜色,在这个例子中我们使用scale_fill_brewer。
In[4]:
ggplot(df, aes(x=transmission, y=price,fill=transmission))+ geom_violin() + geom_boxplot()+ scale_fill_brewer(palette="YlGnBu")
输出[4]:

例5 - 使用scale_fill_manual()为Violin图添加手动颜色
我们也可以用scale_fill_manual()为小提琴图手动分配颜色,如下所示。
In[5]:
ggplot(df, aes(x=transmission, y=price,fill=fuelType)) + geom_violin() + scale_fill_manual(values=c("orange", "yellow", "brown"))
Out[5]:

例6--为小提琴图添加主题
现在让我们用不同的主题来定制我们的小提琴图,为此我们将实现 theme_void() 和 theme_dark() 函数
In[6]:
ggplot(df, aes(x=transmission, y=price,fill=fuelType)) + geom_violin() +
theme_void()
输出[6]:

使用黑暗主题。
在[7]中:
ggplot(df, aes(x=transmission, y=price,fill=fuelType)) + geom_violin() +
theme_dark()
Out[7]:

例7--为小提琴图添加量纲
下面是我们如何使用quantiles参数来为小提琴图添加量值。
In[8]:
ggplot(df, aes(x=transmission, y=price,fill=fuelType))+ geom_violin(draw_quantiles = c(.25, .50, .75))+scale_fill_brewer(palette="Dark2")
输出[8]:

例8--绘制stat_summary图
现在,让我们使用函数 stat_summary() 可以用来在小提琴图上添加均值/中值点等。
在 [9]:
ggplot(df, aes(x=transmission, y=price,fill=transmission))+
geom_violin() +
stat_summary(fun = "mean",
geom = "point",
color = "red",size=3) +scale_fill_manual(values=c("#999999", "#E69F00", "#56B4E9"))
输出[9]:

使用横杠而不是点来显示平均值
在[10]中:
ggplot(df, aes(x=transmission, y=price,fill=transmission)) +
geom_violin() +
stat_summary(fun = "mean",
geom = "crossbar",
color = "green")+ scale_fill_brewer(palette="YlOrBr")
Out[10]:

例9:按组组织
这是一个分组的小提琴图,在我们的数据集中,每一种汽车型号都有一个单独的小提琴图。
在[11]中:
ggplot(head(df,n=30), aes(x=transmission, y=price,fill=model))+
geom_violin()+ scale_fill_brewer(palette="PuBuGn")
Out[11]:

- 还可以阅读-- R中使用ggplot2的直方图教程及实例
- 还可以阅读 - 使用ggplot2在R中学习散点图并举例说明
- 还可以阅读 -使用ggplot2在R中绘制直线图的教程及实例