ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

用 R 可视化蘑菇数据集比例:饼图、环形图与华夫饼图实战

用 R 可视化蘑菇数据集比例:饼图、环形图与华夫饼图实战 用 R 可视化蘑菇数据集比例饼图、环形图与华夫饼图实战【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners本篇文章基于 Data Science for Beginners 课程第 11 课R 语言版以蘑菇数据集为核心系统讲解如何在 R 中把文本型分类数据聚合成比例并用饼图Pie Chart、环形图Donut Chart与华夫饼图Waffle Chart三种图表完成比例可视化。读完本文你将掌握dplyr分组聚合、pie()基础绘图、webr库的PieDonut()环形图以及waffle库华夫饼图的完整使用流程并理解标签顺序对比例图准确性的关键影响。认识蘑菇数据集本节实验数据来自美国奥杜邦协会Audubon发布的蘑菇数据集包含伞菌科 Agaricus 与 Lepiota 两个属共 23 种有菌褶蘑菇的观测记录。在仓库中该数据位于 data/mushrooms.csv共 8124 条样本其中可食用Edible4208 条、有毒Poisonous3916 条。首先将数据集读入 R并查看前几行mushrooms read.csv(data/mushrooms.csv) head(mushrooms)打印出的表格包含丰富的分析字段classcap-shapecap-surfacecap-colorbruisesodorgill-attachmentgill-spacinggill-sizegill-colorstalk-shapestalk-rootstalk-surface-above-ringstalk-surface-below-ringstalk-color-above-ringstalk-color-below-ringveil-typeveil-colorring-numberring-typespore-print-colorpopulationhabitatPoisonousConvexSmoothBrownBruisesPungentFreeCloseNarrowBlackEnlargingEqualSmoothSmoothWhiteWhitePartialWhiteOnePendantBlackScatteredUrbanEdibleConvexSmoothYellowBruisesAlmondFreeCloseBroadBlackEnlargingClubSmoothSmoothWhiteWhitePartialWhiteOnePendantBrownNumerousGrassesEdibleBellSmoothWhiteBruisesAniseFreeCloseBroadBrownEnlargingClubSmoothSmoothWhiteWhitePartialWhiteOnePendantBrownNumerousMeadowsPoisonousConvexScalyWhiteBruisesPungentFreeCloseNarrowBrownEnlargingEqualSmoothSmoothWhiteWhitePartialWhiteOnePendantBlackScatteredUrbanEdibleConvexSmoothGreenNo BruisesNoneFreeCrowdedBroadBlackTaperingEqualSmoothSmoothWhiteWhitePartialWhiteOneEvanescentBrownAbundantGrassesEdibleConvexScalyYellowBruisesAlmondFreeCloseBroadBrownEnlargingClubSmoothSmoothWhiteWhitePartialWhiteOnePendantBlackNumerousGrasses可以看到全部字段都是文本型类别型数据。用names()查看列名R 会自动把 CSV 中的连字符转换为点号names(mushrooms)输出如下共 23 个字段[1] class cap.shape [3] cap.surface cap.color [5] bruises odor [7] gill.attachment gill.spacing [9] gill.size gill.color [11] stalk.shape stalk.root [13] stalk.surface.above.ring stalk.surface.below.ring [15] stalk.color.above.ring stalk.color.below.ring [17] veil.type veil.color [19] ring.number ring.type [21] spore.print.color population [23] habitat在使用图表展示比例之前需要把数据按类别聚合。借助dplyr的管道操作按class有毒/可食用分组并统计样本数library(dplyr) groupedmushrooms %% group_by(class) %% summarise(countn())用View(grouped)查看聚合结果classcountEdible4208Poisonous3916这个统计结果与源数据文件 data/mushrooms.csv 中两类样本的实际计数完全一致可食用 4208、有毒 3916可作为分组聚合正确性的验证依据。接下来就可以按照表中 Edible、Poisonous 的顺序构建饼图了。饼图一图看懂可食用与有毒蘑菇的比例R 自带的基础绘图函数pie()可以直接接受数值向量与标签向量pie(grouped$count,grouped$class, mainEdible?)运行后即可得到展示可食用与有毒蘑菇比例的饼图⚠️关键点标签顺序必须与数值向量顺序一一对应。pie()按位置配对count与class如果标签数组的顺序与聚合结果不一致图表含义会完全颠倒。因此务必反复核对grouped表中类别与计数的先后次序。环形图多类栖息地比例一目了然环形图Donut Chart本质上是中间挖空一块的饼图观感更清爽也便于在中心区域额外标注信息。下面用蘑菇的栖息地habitat字段做演示。先用dplyr按栖息地分组聚合library(dplyr) habitatmushrooms %% group_by(habitat) %% summarise(countn()) View(habitat)输出结果habitatcountGrasses2148Leaves832Meadows292Paths1144Urban368Waste192Wood3148共 7 类栖息地将它们作为环形图的标签。这里借助webr库的PieDonut()函数一行代码即可生成带百分比标注的环形图library(ggplot2) library(webr) PieDonut(habitat, aes(habitat, countcount))这段代码同时使用了ggplot2与webr两个库PieDonut函数封装了环形图的核心绘制逻辑。此外仅使用ggplot2也可以手工构造环形图例如用geom_bar()结合coord_polar()并挖空中心本课程的配套解决方案见 3-Data-Visualization/11-visualization-proportions/solution/notebook.ipynb可作为延伸练习的参考。华夫饼图用方格阵列表达数量比例华夫饼图Waffle Chart以二维方格阵列的形式展示数量比例——每个方格代表一定数量的样本方格密度直观反映各类别占比。这里用蘑菇的菌盖颜色cap.color字段做演示。首先从 CRAN 安装waffle辅助库install.packages(waffle, repos https://cinc.rud.is)然后按菌盖颜色分组聚合library(dplyr) cap_colormushrooms %% group_by(cap.color) %% summarise(countn()) View(cap_color)接下来为每组数量命名并生成华夫饼图。注意这里把计数除以 10即每个方格代表 10 朵蘑菇从而控制方格总量library(waffle) names(cap_color$count) paste0(cap_color$cap.color) waffle((cap_color$count/10), rows 7, title Waffle Chart)scale_fill_manual(valuesc(brown, #F0DC82, #D2691E, green, pink, purple, red, grey, yellow,white))华夫饼图可以清晰看出菌盖颜色的比例分布。有趣的是数据集中绿色菌盖的蘑菇数量相当可观——这也是不同图表类型带来的观察视角差异。小结三种比例图的选型与核心要点本课用同一个蘑菇数据集演示了三种比例可视化方法统一的工作流是先分组聚合数据再选择合适的图形展示。图表类型适用场景核心函数/库注意要点饼图类别较少2~5 类的整体占比pie()标签顺序必须与数值一一对应环形图多类别占比且希望在中心补充信息webr::PieDonut()7 类以上可考虑条形图替代华夫饼图以方格密度直观表达数量比例waffle::waffle()通过除法控制每个方格代表的样本量三者都能让读者在几秒内对数据集形成直观的比例印象。若想进一步练习可尝试在 Charticulator。此外本课程在 Python 版本中提供了同一主题的等价实现使用matplotlib与pywaffleNotebook 位于 3-Data-Visualization/11-visualization-proportions/notebook.ipynbR 与 Python 两版代码可以对照学习帮助理解比例可视化在不同语言生态中的通用思路。说明本文章节基于课程翻译文档 translations/en/3-Data-Visualization/R/11-visualization-proportions/README.md 整理原始课程图稿可参考 sketchnotes/11-Visualizing-Proportions.png。【免费下载链接】Data-Science-For-Beginners10 Weeks, 20 Lessons, Data Science for All!项目地址: https://gitcode.com/GitHub_Trending/da/Data-Science-For-Beginners创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表