饼图也是最常见的图形之一,饼图在商业世界中无所不在,然而多数统计学家,包括相应R文档的编写者却都对它持否定态度。

相对于饼图,更推荐使用条形图或点图,因为相对于面积,人们对长度的判断更精确。

今天来学习下怎么绘制饼图。


目  录

  • 1. 绘图前准备

    • 1.1 加载数据集

    • 1.2 自定义图形参数

  • 2. 绘制简单饼图

  • 3. 自定义饼图参数

    • 3.1 修改颜色

    • 3.2 添加数据标签

  • 4. 绘制3D饼图

  • 5. 绘制条形图

  • 6. 扇状图

  • 7. ggpie()函数绘制饼图

  • 8. pie()函数

  • 9. pie3D()函数

  • 10. fan.plot()函数

  • 11. ggpie()函数


1. 绘图前准备

1.1 加载数据集

饼图常常用于投资领域,投资顾问经常会建议顾客去购买不同类别的股票或理财产品,这些数据表示常常用饼图来表示。

比如:

  • 国内股票-30%
  • 外国股票-25%
  • 债券-28%
  • 黄金/贵金属-10%
  • 现金等价物-7%

我们从上面的百分比中得出一个数字向量,并用来绘制饼图。

allocation 30,25,28,10,7) 

1.2 自定义图形参数

在绘制图形前我们可以自定义相关图形参数,在后面绘图中直接使用。

sector "Stock","For'n'","Bonds",           "Gold","Cash") # 设定投资类别名称sectcol "burlywood","turquoise","firebrick",            "gold3","green4") # 设置投资类别颜色

2. 绘制简单饼图

简单饼图可以使用pie()函数绘制。

pie(allocation,  # 绘制饼图用的数据    labels = sector,  # 设置饼图每部分标签    main = "饼图, 使用默认颜色") # 图形标题

3. 自定义饼图参数

3.1 修改颜色

可以自定义饼图的颜色等。

pie(allocation, labels = sector, col = sectcol,    main = "饼图, 自定义饼图颜色")

3.2 添加数据标签

pct 100)sector2 " ", pct, "%", sep="")pie(allocation, labels=sector2, col=sectcol,    main="Pie Chart with Percentages")

4. 绘制3D饼图

绘制3D饼图需要使用plotrix包的pie3D()函数。

install.packages("plotrix", dependencies = TRUE) # 安装包library(plotrix)  # 加载包pie3D(allocation, # 绘制饼图用的数据       labels = sector,  # 设置饼图每部分的标签      col = sectcol,  # 设置饼图每部分的颜色      explode = .1, # 设置饼图各部分分离间距      labelcex = .95, # 设置标签的大小      main = "3D 饼图") # 设置图形的标题

5. 绘制条形图

饼图数据也可以使用条形图展示。

在上面的饼图中,最大的三个类别看起来一样大,最小的两个大小也差不多,但是使用条形图可以很清楚的看到各部分的大小差异。

barplot(allocation, # 绘图用的数据        names.arg = sector,  # 设置条形图下面的名称        col = sectcol, # 设置条形图的颜色        main = "barplot") # 设置条形图的标题

6. 扇状图

饼图让比较各扇形的值变得困难(除非这些值被附加在标签上)。为改善这种状况,我们创造了一种称为扇形图(fan plot)的饼图变种。这种图看起来像是饼图,但是解决了饼图的缺点。

扇形图提供了一种同时展示相对数量和相互差异的方法。在R中,扇形图是通过plotrix包中的fan.plot()函数实现的。

数据还是使用前面的数据。

library(plotrix) # 绘图函数所在的包fan.plot(allocation, # 绘制图形用的数据         labels = sector, # 图形每部分的标签         col = sectcol, # 图形每部分的颜色         ticks = 30,  # 设置扇状图的刻度         main = "Fan Plot") # 设置标题

在上面的扇形图中,各个扇形相互叠加,并对半径做了修改,这样所有扇形就都是可见的。如上所示,确定扇形图中扇形的相对大小比饼图要简单得多。

7. ggpie()函数绘制饼图

除了上述函数可以绘制饼图外,ggpubr包的ggpie()函数也可以绘制饼图。

install.packages("ggpubr") # 函数需要的包library(ggpubr) # 加载包df "Male", "Female", "Child"),                 value = c(25, 25, 50)) # 创建数据集head(df) # 查看数据集
ggpie(df, "value", label = "group",      fill = "group", color = "white",      palette = c("#00AFBB", "#E7B800", "#FC4E07"))

labs " (", df$value, "%)")ggpie(df, "value", label = labs,      lab.pos = "in", lab.font = "white",      fill = "group", color = "white",      palette = c("#00AFBB", "#E7B800", "#FC4E07"))

8. pie()函数

pie(x, labels = names(x), edges = 200, radius = 0.8,    clockwise = FALSE, init.angle = if(clockwise) 90 else 0,    density = NULL, angle = 45, col = NULL, border = NULL,    lty = NULL, main = NULL, ...)

## 部分参数解释x # 绘制饼图所用的数据,需为非负数值向量,x中的值按比例表示为饼图中的面积。labels # 为饼图每个部分指定标签的表达式或字符串;radius # 如果饼图每部分的标签太长,可以设置此参数缩小饼图半径以显示完整标签;clockwise # 逻辑词,设置饼图是按顺时针绘制还是逆时针绘制,默认逆时针;init.angle # 数字;指定饼图的起始角度,默认0°,也就是3点钟位置density # 阴影线的密度,默认不绘制阴影线,指定非正数值会抑制阴影线的绘制angle # 阴影线的斜率,用度数表示col # 设置饼图每部分的颜色main # 指定饼图的标题

9. pie3D()函数

pie3D(x,edges=NA,radius=1,height=0.1,theta=pi/6,start=0,border=par("fg"),      col=NULL,labels=NULL,labelpos=NULL,labelcol=par("fg"),labelcex=1.5,      sector.order=NULL,explode=0,shade=0.8,mar=c(4,4,4,4),pty="s",...)

## 部分参数解释x # 绘制图形所用的数据,每个值都表示一个扇区edges # 形成椭圆的线数radius # 饼图的半径height # 饼图的高度theta # 弧度视角start # 扇形绘制的起始角度border # 扇区边界线的颜色col # 设置每个部分的颜色labels # 设置每个部分的标签labelpos # 设置扇形每个标签的位置labelcol # 设置标签的颜色labelcex # 设置标签文字的大小sector.order # 指定绘制扇区的顺序explode # 饼图每个部分离中心点的位置shade # 数字,如在0-1之间,则减小扇形颜色亮度以更好的显示3D效果mar # 饼图周围的边距pty # 是否强制使用正方形绘图区域

10. fan.plot()函数

fan.plot(x,edges=200,radius=1,col=NULL,align.at=NULL,max.span=NULL,  labels=NULL,labelpos=NULL,label.radius=1.2,align="left",shrink=0.02,  main="",ticks=NULL,include.sumx=FALSE,...)

## 部分参数解释x # 绘制图形用的数字向量edges # 绘制圆形的边数radius # 扇区的半径col # 填充扇区的颜色align.at # 对齐扇区的位置max.span # 最大弧度的角度labels # 在扇区弧周围放置标签labelpos # 设置标签放置位置label.radius # 标签放在距扇区多远的位置align # 扇区对其的位置shrink # 后续每个扇区的缩减量main # 图形标题ticks # 默认无刻度,设置出现的刻度数include.sumx # 逻辑词,是否将所有x值的和包括为最大扇区

11. ggpie()函数

ggpie(data, x, label = x, lab.pos = c("out", "in"),  lab.adjust = 0, lab.font = c(4, "bold", "black"),  font.family = "", color = "black", fill = "white",  palette = NULL, size = NULL,  ggtheme = theme_pubr(),  ...)

## 部分参数解释data # 包含x变量的数据框x # 绘制饼图的数据label # 指定饼图每部分标签的变量lab.pos # 指定标签位置的字符,有两个:out表示标签在图形外,in表示标签在图形内lab.adjust  # 数值,当lab.pos为in时,用于调整标签的位置,自己试着调整lab.font = c(4, "bold", "black") # 指定标签的大小、样式和颜色font.family # 指定标签的字体格式color、fill # 指定饼图的轮廓和填充颜色palette # 设置线图颜色的调色板;可为灰色调色板"grey";自定义调色板c("blue","red")# ggsci包调色板:"npg","aaas","lancet","jco","ucscgb","uchicago","simpsons"和"rickandmorty"。size  # 数值,设置点和轮廓的大小ggtheme # ggplot2主题名称,默认为theme_pubr();# 可用值包括theme_gray(),theme_bw(),theme_minimal(),theme_classic(),theme_void()...

以上函数解释翻译自帮助文件,如有错误/不懂地方,请自行查阅帮助文件。

参考资料

  1. Graphing Data with R. John Jay Hilfiger著
  2. [美]Robert I.Kabacoff著.R语言实战(第2版)[M].王小宁等译.北京:人民邮电出出版社.2016.
  3. pie()函数帮助文件
  4. pie3D()函数帮助文件
  5. fan.plot()函数帮助文件
  6. ggpie()函数帮助文件

相关文章

R语言统计与绘图:forestplot包绘制森林图

R语言统计与绘图:pROC包绘制ROC曲线

R语言统计与绘图:ROC曲线上32种截断值的计算

R语言统计与绘图:ROC曲线的统计计算

R语言统计与绘图:可视化ROC曲线的置信区间

R语言统计与绘图:绘制平滑ROC曲线

R语言统计与绘图:绘制不同坐标轴置信区间的森林图

R语言统计与绘图:绘制多个置信区间的森林图

分享、点赞、在看,一键三连!

ogre绘制3d图形_R语言统计与绘图:绘制饼图相关推荐

  1. c++语言表白超炫图形_R语言统计与绘图:组合图形布局

    R主要有两大功能,除了统计分析外,R数据可视化也是及其重要的. 在R中绘图时,大多时候是绘制一张图形,但是有时也需绘制多张图形,并且是多张图形的相互组合,在绘制好后在需要输出组合图形. 今天介绍下R中 ...

  2. 检验int值在list中是否存在_R语言统计与绘图:卡方检验

    卡方检验在计数资料中的应用,包括推断两个总体率或构成比之间有无差别.多个总体率或构成比之间有无差别.多个样本率间的多重比较.两个分类变量之间有无关联性.多维列联表的分析和频数分布拟合优度的卡方检验. ...

  3. r语言做绘制精美pcoa图_R语言统计与绘图:绘制QQ图

    QQ图一般用来比较两组数字的分布,比如两个变量或两个向量. 在国外,顾客习惯性会给服用人员小费,给多少小费是一个经常被讨论的话题,今天使用的数据集为reshape2包的tips数据集,用来演示QQ图的 ...

  4. r语言 图形一览_R语言统计与绘图:ggplot2图形组合布局

    在科研论文中,有时我们需要绘制几张图形,并将这几张图形整合到一张大图上面. 前面我们学习了基础绘图包怎么组合布局图形,今天来学习两个新函数,看ggplot2绘制的图形怎么组合. ggplot2组合图形 ...

  5. 使用Matplotlib绘制3D图形

    本文是Matplotlib的第二篇文章,会讲解如何通过Matplotlib绘制3D图形.关于Matplotlib的第一篇文章,请看这里:Python绘图库Matplotlib入门教程. 测试环境 由于 ...

  6. 绘制图形可以使用什么python数据库_用Matplotlib如何绘制3D图形

    Matplotlib是一个Python 2D绘图库,它可以在各种平台上以各种硬拷贝格式和交互式环境生成出具有出版品质的图形. 在上篇中讲述的是如何对图形颜色和线条的填充,而今天给大家带来的是用matp ...

  7. python代码示例图形-Python使用matplotlib绘制3D图形(代码示例)

    本篇文章给大家带来的内容是关于Python使用matplotlib绘制3D图形(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 3D图形在数据分析.数据建模.图形和图像处理 ...

  8. python绘制3d图-Python绘制3D图形

    3D图形在数据分析.数据建模.图形和图像处理等领域中都有着广泛的应用,下面将给大家介绍一下如何使用python进行3D图形的绘制,包括3D散点.3D表面.3D轮廓.3D直线(曲线)以及3D文字等的绘制 ...

  9. python绘制三维曲面图-Python中使用Matplotlib绘制3D图形示例

    原标题:Python中使用Matplotlib绘制3D图形示例 3D图形能给我们对数据带来更加深入地理解.python的matplotlib库就包含了丰富的3D绘图工具.3D图形在数据分析.数据建模. ...

最新文章

  1. hdu2852(2009多校第四场) 树状数组求区间第k大的数 两种方法
  2. java类定义的顺序_Java类及对象的初始化顺序
  3. Scrum介绍——续
  4. python练习2 购物车程序
  5. vs.net 打开.xaml文件编辑界面_怎么保护可移动磁盘中的文件防止被删除
  6. python实现栈的操作入站出站查找元素等_Python实现的栈(Stack)
  7. 用 1 行 Python 代码实现 FTP 服务器 - Pyftpdlib
  8. 后端基础概念:各种OCV一网打尽(下篇)
  9. Zephyr_Bindings目录作用
  10. 深入浅出事件流处理NEsper(三)
  11. centos7安装中文字体
  12. 《UNIX网络编程 卷1》一、环境配置
  13. AutoCAD的所有的序列号和秘钥
  14. 朋友圈微信投票很麻烦?python开发个自动化刷票脚本,再也不用头痛了!
  15. 关于Palantir—第四部分:Palantir应用程序
  16. C语言实现图的深度优先遍历和广度优先遍历
  17. 数博会金蝶揭秘智能零售:名企转型底气
  18. boxplot箱型图的离群点outlier和极端点extremes
  19. python男孩_python爬虫:爬取男生喜欢的图片
  20. 服务器远程桌面参数,windows远程桌面mstsc 参数

热门文章

  1. 腾讯阿里字节扎堆做公益,互联网技术也要“内卷”?
  2. “供应链”之后,传统零售如何会战“服务链”?
  3. springwebflux 页面_Spring Webflux 响应式框架入门
  4. 蚂蚁森林快捷指令_利用快捷指令实现钉钉自动化打卡
  5. Python中join 和 split详解
  6. python 将字节字符串转换成十六进制字符串
  7. Python中,我该如何切分字符串后保留分割符?
  8. 计算机网络通信有哪些研究课题,科研进阶 | 西北大学 | 电子信息工程、通信与信息系统:通信与计算机网络...
  9. 请写php合并数组,合并PHP数组
  10. python的tell和seek_python文件对象的seek和tell