点击关注,桓峰基因

桓峰基因

生物信息分析,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.

FigDraw 8. SCI 文章绘图之饼图 (Pieplot)相关推荐

  1. FigDraw 11. SCI 文章绘图之小提琴图 (ViolinPlot)

    桓峰基因公众号推出基于R语言绘图教程并配有视频在线教程,目前整理出来的教程目录如下: FigDraw 1. SCI 文章的灵魂 之 简约优雅的图表配色 FigDraw 2. SCI 文章绘图必备 R ...

  2. FigDraw 13. SCI 文章绘图之桑葚图及文章复现(Sankey)

    点击关注,桓峰基因 桓峰基因 生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你 127篇原创内容 公众号 桓峰基因公众号推 ...

  3. FigDraw 17. SCI 文章绘图之主成分绘图(pca3d)

    点击关注,桓峰基因 桓峰基因公众号推出基于R语言绘图教程并配有视频在线教程,目前整理出来的教程目录如下: FigDraw 1. SCI 文章的灵魂 之 简约优雅的图表配色 FigDraw 2. SCI ...

  4. FigDraw 14. SCI 文章绘图之和弦图及文章复现(Chord Diagram)

    点击关注,桓峰基因 桓峰基因 生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你 128篇原创内容 公众号 桓峰基因公众号推 ...

  5. FigDraw 12. SCI 文章绘图之相关性矩阵图(Correlation Matrix)

    桓峰基因公众号推出基于R语言绘图教程并配有视频在线教程,目前整理出来的教程目录如下: FigDraw 1. SCI 文章的灵魂 之 简约优雅的图表配色 FigDraw 2. SCI 文章绘图必备 R ...

  6. FigDraw 5. SCI 文章绘图之柱状图 (Barplot)

    点击关注,桓峰基因 桓峰基因 生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你 108篇原创内容 公众号 桓峰基因的教程不 ...

  7. FigDraw 2. SCI 文章绘图必备 R 语言基础

    点击关注,桓峰基因 桓峰基因 生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你 70篇原创内容 公众号 关注公众号,桓峰基 ...

  8. FigDraw 4. SCI 文章绘图之散点图 (Scatter)

    点击关注,桓峰基因 桓峰基因 生物信息分析,SCI文章撰写及生物信息基础知识学习:R语言学习,perl基础编程,linux系统命令,Python遇见更好的你 72篇原创内容 公众号 前两期简单介绍了 ...

  9. FigDraw 9. SCI 文章绘图之直方图 (HistogramPlot)

    前 言 当我们提到直方图时,一定会想到直方图和密度图,一般这两种方法都会结合在一起,有着千丝万缕的联系,下面我们就来了解一下其中的含义以及绘图技巧! 统计直方图 统计直方图( Histogram),形 ...

  10. FigDraw 9. SCI 文章绘图之韦恩图 (Vennplot)

    这期来聊聊韦恩图,这种图形虽然简单,但是也是文章中很常见的,今天就来看看 CNS 级别文章中的Venn该怎么绘制? 前言 维恩图用于展示在不同的事物群组(集合)之间的数学或逻辑联系,尤其适合用来表示集 ...

最新文章

  1. java 并发任务_java 并发 - 运行多个任务并执行第一个结果
  2. 中文自然语言处理数据集:ChineseNLPCorpus(附链接)
  3. 【Matlab 控制】矩阵、图像操作基础
  4. grep线上环境精典案例后续
  5. 【python 3.6】python读取json数据存入MySQL(一)
  6. CentOS 下线,TencentOS Server 全新登陆带来最强支持
  7. 关于 SAP Spartacus CSR fallback 之后,是否仍然会继续进行 SSR 的处理
  8. python对文件的_python 对文件操作
  9. Linux用户和用户组和文件权限介绍
  10. 新海诚动画背景简单娱乐分析
  11. 如果你是测试在职,我给你几条快速成长的建议!供所有做软件测试的参考...
  12. Linux系统安全防护加固
  13. poj 1657 Distance on Chessboard
  14. ORACLE 包内的存储过程的动态sql
  15. 思科CISCO ASA 5521 防火墙 Ipsec 配置详解
  16. 游戏《我的世界》马怎么繁殖?如何驯化?
  17. 【JAVA】Retrofit详解和使用
  18. 什么是formData
  19. PIE-Engine APP:广东省生态遥感指数研究
  20. 2016 年最新苹果开发者账号注册流程详解(个人账号篇)

热门文章

  1. 技术人员的价值是什么?技术的价值体现在赋能业务
  2. 弃用个人博客站重返CSDN缘由
  3. 如何打开.pos文件
  4. 零点和极点到底影响了什么?什么是最小相位系统?
  5. HDU-3237 Help Bubu(状压dp)
  6. 俄语入门-俄语语音规则
  7. Nginx服务器的gzip压缩详解
  8. 使用itextPdf合并PDF
  9. python爬取堆糖网每日精选图片
  10. 2022双十一投影仪选购清单,知名博主分享2022投影仪推荐名单