R语言基础 - 饼图piechart

R语言基础绘图 —— 饼图piechart

数据准备

这里展示变异注释类型所占百分比:

filename <- "data/Count_by_effects.csv"
df <- read.csv(filename)
# 去除百分比符号,并转换为数值
df$Percent <- as.numeric(gsub("%""", df$Percent))
# 四舍五入到4位小数
df$Percent <- round(df$Percent, 2)
df <- df[order(-df$Percent), ][1:10, ]
head(df)

baseR绘制饼图

调用 pie() 函数即可:

library(Cairo)
library(paletteer)

colors <- paletteer_d("ggthemes::Classic_Green_Orange_12")

CairoPDF("test.pdf", width=7, height=2.5)
par(mar=c(0008), oma=c(00015))
# 增加科学计数法的惩罚值
options(scipen = 999)
pie(x = df$Count, 
    labels = ""
    cex = 1
    radius = 1
    clockwise = TRUE
    col = colors,
    border = NA,
    main = NA)

# 添加图例
legend(x = 1.2,
       y = 1,
       legend = paste0(df$Type, " (", df$Percent, "%)"),
       bty = "n",
       fill = colors,
       border = NA,
       #title = "SNP effect",
       xpd = NA,
       cex = 1)

dev.off()
  • x: 这个参数接受一个数值向量,表示每个饼图片段的大小。

  • labels: 用于指定每个饼图片段旁边显示的标签。这里因为我们的类别太多,如果都展示的话会显得很拥挤,所以这里给一个空的字符串。

  • cex: 字符扩展大小(Character EXpansion size)。这个参数用于控制标签的字体大小,其中**1是默认大小,小于1的值会缩小字体,大于1**的值会放大字体。

  • radius: 饼图的半径,可以用来控制饼图的大小。在这里,**radius = 1**表示使用默认的半径大小。

  • clockwise: 一个逻辑值(TRUE或FALSE),用于指定饼图的绘制方向。**TRUE表示饼图的片段将按顺时针方向绘制,而FALSE**(默认值)表示按逆时针方向绘制。

  • col: 为饼图的每个片段指定颜色。**colors是一个颜色向量,它的长度应该和x**参数的长度相匹配。每个饼图片段将按照这个向量中颜色的顺序进行着色。

  • main: 指定饼图的主标题。

注意:我们这里绘制的图例标签非常长,为了将其完全展示出来,需要设置这几个参数:

  • 图片长宽

  • 使用**par(mar=c())par(oma=c())调整边界。mar用于设置图形四周的边界大小,而oma**用于设置外边界大小。

  • **inset=c(-0.3, 0)xpd=NA**参数确保图例即使很长也不会被裁剪,且能够完全展示在绘图区域之外。

ggplot2绘制饼图

ggplot2 可以通过设置坐标轴的方式将条形图转换为饼图。

用 ggplot2 绘制饼图的优势在于我们可以更精细的控制图形的细节,例如特定主题,图例标题的位置等,但由于 ggplot2 并没有原生的饼图函数,所以我们无法很方便的像 baseR 绘图那样为饼图的每个区域添加指定的文本标签。

library(ggplot2)
library(dplyr)

df$Type <- factor(df$Type, levels = df$Type)

p <- ggplot(df, aes(x = "", y = Count, fill = Type)) +
  geom_bar(stat = "identity", width = 1) +
  coord_polar("y", start = 0) +
  scale_fill_manual(
    values = colors,
    labels = paste0(df$Type, " (", df$Percent, "%)")
  ) +
  labs(fill = "SNP effect type") +
  theme_void() +
  theme(
    legend.text = element_text(size = 12),
    legend.key.size = unit(0.5"cm"),
    legend.title = element_text(size = 14, face = "bold"))

CairoPDF("test2.pdf", width=7, height=3)
print(p)
dev.off()

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/754252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu - 安装cmake

编译时提示 CMake Error at CMakeLists.txt:24 (cmake_minimum_required): CMake 3.22 or higher is required. You are running version 3.10.2 -- Configuring incomplete, errors occurred! 大概意思就是编译使用cmake的最低版本是 3.22&#xff0c;我自己的是3.10.2。…

【目标检测】YOLOv2 网络结构(darknet-19 作为 backbone)

上一篇文章主要是写了一些 YOLOv1 的原版网络结构&#xff0c;这篇文章一样&#xff0c;目标是还原论文中原版的 YOLOv2 的网络结构&#xff0c;而不是后续各种魔改的版本。 YOLOv2 和 YOLOv1 不一样&#xff0c;开始使用 Darknet-19 来作为 backbone 了。论文中给出了 Darkne…

springboot280基于WEB的旅游推荐系统设计与实现

旅游推荐系统设计与实现 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装旅游推荐系统软件来发挥其高效地信息处理…

5-隐藏层:神经网络为什么working

声明 本文章基于哔哩哔哩付费课程《小白也能听懂的人工智能原理》。仅供学习记录、分享&#xff0c;严禁他用&#xff01;&#xff01;如有侵权&#xff0c;请联系删除 目录 一、知识引入 &#xff08;一&#xff09;隐藏层 &#xff08;二&#xff09;泛化 &#xff08;三…

深入理解浏览器的页面渲染机制

在当今的网络技术日益发展的背景下&#xff0c;网页变得越来越复杂和动态。作为开发者&#xff0c;理解浏览器如何渲染页面对于优化性能、提升用户体验至关重要。本文将深入探讨浏览器的页面渲染过程&#xff0c;包括重排&#xff08;Reflow&#xff09;和重绘&#xff08;Repa…

【Spring Cloud】SpringCloud接入SOFARegistry

背景 由于项目开发使用的是SpringCloud&#xff0c;但是甲方使用的是阿里云提供的私有云注册中心&#xff0c;需要替换注册中心。 方案 官方文档&#xff1a;Spring Cloud 使用 SOFARegistry 改造的步骤&#xff1a; 1.去掉原项目中注册中心的pom依赖引入&#xff0c;我们使…

java算法题每日多道

274. H 指数 题目 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义&#xff1a;h 代表“高引用次数” &#xff0c;一名科研人员的 h 指数 是指他&#xff08;…

鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Ellipse)

椭圆绘制组件。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Ellipse(options?: {width?: string | number, height?: string | number}) 从API version 9开始&#xff0…

数据结构知识Day1

数据结构是什么&#xff1f; 数据结构是计算机存储、组织数据的方式&#xff0c;它涉及相互之间存在一种或多种特定关系的数据元素的集合。数据结构反映了数据的内部构成&#xff0c;即数据由哪些成分数据构成&#xff0c;以何种方式构成&#xff0c;以及呈现何种结构。这种结…

谷歌发布Bard AI以与ChatGPT/GPT-4竞争

Google发布Bard AI&#xff0c;与ChatGPT/GPT-4竞争 概述 谷歌近日推出了一款名为Bard的创新型AI聊天机器人&#xff0c;旨在与OpenAI的ChatGPT和微软的Bing Chat竞争。与同类产品不同&#xff0c;Bard能够直接从其模型中生成信息&#xff0c;而不是检索搜索结果。Bard被视为…

LeetCode讲解算法1-排序算法(Python版)

文章目录 一、引言问题提出 二、排序算法1.选择排序&#xff08;Selection Sort&#xff09;2.冒泡排序3.插入排序&#xff08;Insertion Sort&#xff09;4.希尔排序&#xff08;Shell Sort&#xff09;5.归并排序&#xff08;Merge Sort&#xff09;6.快速排序&#xff08;Qu…

【Node.js从基础到高级运用】十三、NodeJS中间件高级应用

在现代web开发中&#xff0c;Node.js因其高效和灵活性而备受青睐。其中&#xff0c;中间件的概念是构建高效Node.js应用的关键。在这篇博客文章中&#xff0c;我们将深入探讨Node.js中间件的高级应用&#xff0c;包括创建自定义中间件、使用第三方中间件等。我们将从基础讲起&a…

AJAX-原理XMLHttpRequest

定义 使用 查询参数 定义&#xff1a;浏览器提供给服务器的额外信息&#xff0c;让服务器返回浏览器想要的数据 语法&#xff1a;http://xxxx.com/xxx/xxx?参数名1值1&参数名2值2

ChatGPT编程Python小案例(拿来就用)—解压zip压缩文件

ChatGPT编程Python小案例&#xff08;拿来就用&#xff09;—解压zip压缩文件 今天撸一本书&#xff0c;其中书中提供一个zip压缩文件的资料。下载之后&#xff0c;没有解压软件&#xff0c;&#xff08;也可能该文件可以自解压&#xff09;。这段时间已经深刻体会到AI编程带来…

爬虫 Day2

resp.close()#关掉resp 一requests入门 &#xff08;一&#xff09; 用到的网页&#xff1a;豆瓣电影分类排行榜 - 喜剧片 import requestsurl "https://movie.douban.com/j/chart/top_list" #参数太长&#xff0c;重新封装参数 param {"type": "…

【Unity每日一记】unity中的内置宏和条件编译(Unity内置脚本符号)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

EDI在汽车主机厂配送流程中的应用

汽车主机厂的汽车配送流程始于汽车 “生产结束 ” &#xff0c;止于 “交付给经销商 ” 。在这个流程中&#xff0c;企业作为主机厂的下游供应商&#xff0c;与主机厂的物流服务供应商之间的信息交换将会变得十分重要。 配送流程&#xff1a;运输订单以及报告 汽车主机厂提供预…

【linux驱动】定时器的使用

【linux驱动】定时器的使用 文章目录 【linux驱动】定时器的使用1.介绍1.1相关名词1.2配置HZ的方法 2.API3.示例4.调试 1.介绍 1.1相关名词 HZ、jiffies、tick Linux系统启动后&#xff0c;每隔固定周期就会发出timer interrupt(IRQ 0)&#xff0c;HZ用来定义每一秒发生多少…

Day50| 123 买卖股票的最佳时机III 188 买卖股票的最佳时机IV

目录 123 买卖股票的最佳时机III 188 买卖股票的最佳时机IV 123 买卖股票的最佳时机III class Solution { public:int maxProfit(vector<int>& prices) {vector<vector<int>> dp(prices.size() 1, vector<int>(5, 0));dp[0][0] 0;dp[0][…

模块化开发在不同编程语言中的实现方式有何异同?并以LabVIEW为例进行说明

模块化开发是一种软件设计方法&#xff0c;它将一个大型程序分解成独立的、可以单独开发和测试的模块或组件。这种方法提高了代码的可重用性、可维护性和可测试性。不同编程语言实现模块化开发的方式各有特色&#xff0c;但都遵循基本的设计原则&#xff0c;如封装、接口抽象和…