FigDraw 8. SCI 文章绘图之饼图 (Pieplot)

图片

点击关注,桓峰基因

桓峰基因

生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你

112篇原创内容

公众号

桓峰基因的教程不但教您怎么使用,还会定期分析一些相关的文章,学会教程只是基础,但是如果把分析结果整合到文章里面才是目的,觉得我们这些教程还不错,并且您按照我们的教程分析出来不错的结果发了文章记得告知我们,并在文章中感谢一下我们哦!

公司英文名称:Kyoho Gene Technology (Beijing) Co.,Ltd.

如果您觉得这些确实没基础,需要专业的生信人员帮助分析,直接扫码加微信nihaoooo123,我们24小时在线!!

桓峰基因公众号不断推出R语言绘图系列教程,专门为没有绘图基础的老师同学准备,从简易难,一步一步做出来 CNS 级别靓图,最重要的是每个教程已经开始配有视频教程,可以直接关注桓峰基因视频号或者关注桓峰基因B站教程:

目前整理出来的教程目录如下:

FigDraw 1. SCI 文章的灵魂 之 简约优雅的图表配色
FigDraw 2. SCI 文章绘图必备 R 语言基础
FigDraw 3. SCI 文章绘图必备 R 数据转换
FigDraw 4. SCI 文章绘图之散点图 (Scatter)
FigDraw 5. SCI 文章绘图之柱状图 (Barplot)
FigDraw 6. SCI 文章绘图之箱线图 (Boxplot)
FigDraw 7. SCI 文章绘图之折线图 (Lineplot)
FigDraw 8. SCI 文章绘图之饼图 (Pieplot)


前言

饼图(pie chart)被广泛地应用于各个领域,用于表示不同分类的占比情况,通过弧度大小来对比各种分类。饼图通过将一个圆饼按照分类的占比划分成多个切片,整个圆饼代表数据的总量,每 个切片(圆弧)表示该分类占总体的比例,所有切片(圆弧)的加和等于100%。饼图可以很好地帮助用户快速了解数据的占比分配。它的主要缺点是:

(1)饼图不适用于多分类的数据,原则上一张饼图不可多于9个分类。因为随着分类的增多,每个切片就会变小,最后导致大小区分不明显,每个切片看上去都差不多大小,这样对于数据的对比是没有什么意义的;

( 2)相对具备同样功能的其他图表(比如百分比堆积柱形图、圆环图),饼图需要占据更大的画布空间,所以饼图不适合用于数据量大的场景;

(3)很难在多个饼图之间进行数值比较,此时可以使用百分比堆积柱形图或者百分比堆积条形图替代;

(4)饼图不适合多变量的连续数据的占比可视化,此时应该使用百分比堆积面积图展示数据,比如多变量的时序数据。

绘制饼图

如何使用ggplot2绘制饼图。其实ggplot2并没有类似于geom_pie()这样的函数实现饼图的绘制,但ggplot2有一个理念,就是通过极坐标变换绘制饼图,下文就教大家一步步绘制精美的饼图。对于饼图的绘制就说到这里,如果你想绘制3D饼图,ggplot2就不是一个很好的选择,因为其目前还无法实现3D功能。所以我们这里介绍三种绘图方式,每种都有自己的特点,使用时选择适合自己的就可以了!

1. 软件包安装

首先安装软件包如下:

if (!require(ggplot2)) install.packages("ggplot2")
if (!require(graphics)) install.packages("graphics")
if (!require(plotrix)) install.packages("plotrix")
library(ggplot2)
library(graphics)
library(plotrix)

2. 数据读取

我们构造一套数据,水果销售情况,如下:

sales <- c(12, 30, 26, 16, 4, 12)
fruits <- c("Blueberry", "Cherry", "Apple", "Boston Cream", "Other", "Vanilla Cream")
label_value <- paste(fruits, "(", sales, "%", ")", sep = "")

df = data.frame(sales = sales, fruits = fruits, label = label_value)
df
##   sales        fruits              label
## 1    12     Blueberry     Blueberry(12%)
## 2    30        Cherry        Cherry(30%)
## 3    26         Apple         Apple(26%)
## 4    16  Boston Cream  Boston Cream(16%)
## 5     4         Other          Other(4%)
## 6    12 Vanilla Cream Vanilla Cream(12%)

3. coord_polar{ggplot2}

在绘制饼图之前需要绘制堆叠的条形图,通过将条形图进行极坐标变换后,就能实现饼图绘制了。

p = ggplot(data = df, mapping = aes(x = "Content", y = sales, fill = label)) + geom_bar(stat = "identity",
    position = "stack") + theme_bw() + labs(x = "", y = "", title = "") + theme(axis.text = element_blank(),
    axis.ticks = element_blank()) + scale_fill_discrete(labels = df$label[order(df$label,
    decreasing = F)])
p

图片

饼图在ggplot2中就是通过极坐标变换获得,如下:```

p1 = p + coord_polar(theta = "y")
p1

图片

我们也可以将标签写在饼图上面,因此我们先去掉lenged,如下:

p2 = p1 + theme(legend.position = "none")
p2

图片

在加文本的时候,我们需要注意一下调整数据以及文本的顺序,如下:

sig = factor(df$label, levels = df$label[order(df$label, decreasing = T)], ordered = TRUE)
levels(sig)
## [1] "Vanilla Cream(12%)" "Other(4%)"          "Cherry(30%)"       
## [4] "Boston Cream(16%)"  "Blueberry(12%)"     "Apple(26%)"

sales1 = df$sales[order(df$label, decreasing = T)]
sales1
## [1] 12  4 30 16 12 26

当顺序都调整好之后,再次绘制饼图,如下:

p3 = p2 + geom_text(aes(y = sales1/2 + c(0, cumsum(sales1)[-length(sales1)]), x = sum(sales1)/80),
    label = levels(sig), hjust = 0.5, size = 3.5)
p3

图片

4. pie{graphics}

我们说使用ggplot2太麻烦了,有直接可以绘制饼图的函数,为啥舍近求远呢?直接上函数pie()就完事了呗!

1. 彩虹色饼图
pie(rep(1, 24), col = rainbow(24), radius = 0.9)

图片

2. 默认颜色

我感觉默认颜色其他比ggplot2的颜色搭配清新了许多,有种夏天的感觉,你觉得呢?

pie.sales <- c(0.12, 0.3, 0.26, 0.16, 0.04, 0.12)
names(pie.sales) <- c("Blueberry", "Cherry", "Apple", "Boston Cream", "Other", "Vanilla Cream")
pie(pie.sales)  # default colours

图片

3. 修改颜色
pie(pie.sales, col = c("purple", "violetred1", "green3", "cornsilk", "cyan", "white"))

图片

灰色系,有些期刊特别适合这种色系,简单大气!

pie(pie.sales, col = gray(seq(0.4, 1, length.out = 6)))

图片

4. 顺时针
pie(pie.sales, clockwise = TRUE, main = "clockwise = TRUE")

图片

3. pie3D{plotrix}

除了平面的饼图之外,plotrix包也提供绘制3D饼图,这个功能与excel制作的立体饼图非常相似,也同样非常好用。

1. 显示分类
pie3D(df$sales, radius = 1.5, labels = df$fruits, explode = 0.2, main = "3D PIE OPINIONS")

图片

2. 显示分类及比例
pie3D(df$sales, radius = 2, labels = df$label, explode = 0.3, main = "3D PIE OPINIONS")

图片

图片

总结了这么多,是否对饼图怎么搞清晰多了,文章中可能出现的图形都已经包含在细节中,您细品,仔细品就豁然开朗了!!

References:
  1. Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

  2. Cleveland, W. S. (1985) The Elements of Graphing Data. Wadsworth: Monterey, CA, USA.

  3. Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

  4. Cleveland, W. S. (1985) The Elements of Graphing Data. Monterey, CA: Wadsworth.

  5. Murrell, P. (2005) R Graphics. Chapman & Hall/CRC Press.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值