上篇博客,我们讲到了使用R包绘制不超过五组数据集的维恩图,末尾留了个尾巴:就是数据集超过五组数据集怎么绘制呢,当然可以选择绘制花瓣图进行数据的分析和可视化。下面我就带了大家使用R绘制花瓣图!

废话不多说,直接上R绘图代码:


测试数据文件内容长这样!需要的请在该博文下面留言联系我!


## 1.导入R包(R包如果没有安装,导入前需要安装,使用install.packages("R包名称")进行安装)

library(rio)

library(plotrix)

## 2.读取数据

venn_data_index <- list.files(path = "./", pattern = "^venn_data")

venn_data <- import(venn_data_index)

sample_id <- colnames(venn_data)

otu_id <- unique(venn_data[,1])

otu_id <- otu_id[otu_id != '']

core_otu_id <- otu_id

otu_num <- length(otu_id)

## 3.遍历数据文件获取数据

for (i in 2:ncol(venn_data)) {

otu_id <- unique(venn_data[,i])

otu_id <- otu_id[otu_id != '']

core_otu_id <- intersect(core_otu_id, otu_id)

otu_num <- c(otu_num, length(otu_id))

}

core_num <- length(core_otu_id)

## 4.定义备选颜色(示例数据20个样本,所以我设置了20种颜色)

ellipse_col <- c('#6181BD4E','#F348004E','#64A10E4E','#9300264E','#464E044E','#049a0b4E','#4E0C664E','#D000004E','#FF6C004E','#FF00FF4E','#c7475b4E','#00F5FF4E','#BDA5004E','#A5CFED4E','#f0301c4E','#2B8BC34E','#FDA1004E','#54adf54E','#CDD7E24E','#9295C14E')

## 5.创建绘图函数:flower_plot()

flower_plot <- function(sample, otu_num, core_otu, start, a, b, r, ellipse_col, circle_col) {

par( bty = 'n', ann = F, xaxt = 'n', yaxt = 'n', mar = c(1,1,1,1))

plot(c(0,10),c(0,10),type='n')

n  <- length(sample)

deg <- 360 / n

res <- lapply(1:n, function(t){

draw.ellipse(x = 5 + cos((start + deg * (t - 1)) * pi / 180),

y = 5 + sin((start + deg * (t - 1)) * pi / 180),

col = ellipse_col[t],

border = ellipse_col[t],

a = a, b = b, angle = deg * (t - 1))

text(x = 5 + 2.5 * cos((start + deg * (t - 1)) * pi / 180),

y = 5 + 2.5 * sin((start + deg * (t - 1)) * pi / 180),

otu_num[t])

if (deg * (t - 1) < 180 && deg * (t - 1) > 0 ) {

text(x = 5 + 3.3 * cos((start + deg * (t - 1)) * pi / 180),

y = 5 + 3.3 * sin((start + deg * (t - 1)) * pi / 180),

sample[t],

srt = deg * (t - 1) - start,

adj = 1,

cex = 1

)

} else {

text(x = 5 + 3.3 * cos((start + deg * (t - 1)) * pi / 180),

y = 5 + 3.3 * sin((start + deg * (t - 1)) * pi / 180),

sample[t],

srt = deg * (t - 1) + start,

adj = 0,

cex = 1

)

}

})

draw.circle(x = 5, y = 5, r = r, col = circle_col, border = NA)

text(x = 5, y = 5, paste('Core:', core_otu))

}

## 6.调用上述函数作图(保存图片到本地文件夹中)

png('flower.png', width = 1500, height = 1500, res = 200, units = 'px')

flower_plot(sample = sample_id, otu_num = otu_num, core_otu = core_num,

start = 90, a = 0.5, b = 2, r = 1, ellipse_col = ellipse_col, circle_col = 'white')

dev.off()

pdf('flower.pdf', width = 15, height = 15)

flower_plot(sample = sample_id, otu_num = otu_num, core_otu = core_num,

start = 90, a = 0.5, b = 2, r = 1, ellipse_col = ellipse_col, circle_col = 'white')

dev.off()

## 7.成果展示

结尾语:

本次我们的维恩图系列就算完成了,希望对大家有帮助,大家可以通过“跑”(运行)别人的代码来进行快速的R语言的学习!最后,请点赞加关注,有问题欢迎讨论!

使用R绘制花瓣图_2020-11-10相关推荐

  1. R绘制坡度图(Slope Chart)

    R绘制坡度图(Slope Chart) 坡度图(Slope Chart)可以高效地可视化同一个核心指标随着时间推移的变化情况.目前,还没有现成的构建函数来绘制坡度图. 下面的代码可以作为一个抛砖引玉的 ...

  2. R绘制面积图(area plot)

    R绘制面积图(area plot) 面积图 面积图与折线图.柱形图.散点图一样,都是属于常用的商务图表.面积图是一种随时间变化而改变范围的图表,主要强调数量与时间的关系.例如,用某企业每个月销售额绘制 ...

  3. R绘制QQ图并解读QQ图

    R绘制QQ图并解读QQ图 目录 R绘制QQ图并解读QQ图 Q-Q图 R绘制QQ图 美化Q-Q图

  4. R绘制Nomogram图

    Nomogram,中文常称为诺莫图或者列线图,简单的说是将Logistic回归或Cox回归的结果进行可视化呈现.它根据所有自变量回归系数的大小来制定评分标准,给每个自变量的每种取值水平一个评分,对每个 ...

  5. R绘制Nomogram图的学习笔记

    Nomogram,中文常称为诺莫图或者列线图,简单的说是将Logistic回归或Cox回归的结果进行可视化呈现.它根据所有自变量回归系数的大小来制定评分标准,给每个自变量的每种取值水平一个评分,对每个 ...

  6. 【数据可视化应用】绘制森林图(附Python和R语言代码)

    森林图(Forest Plot)的简单介绍 森林图(Forest Plot) 常用于Meta分析结果展示使用.森林图(可以将观察到的效果.置信区间以及每个研究对象的权重等信息全部表示出来,是一种简单直 ...

  7. R | 可视化 | 热图(Heatmap)

    1 基础绘制 R绘制热图时,数据需要输入一个矩阵,可以用as.matrix()把它转换成矩阵.这里利用R自带的数据集绘制热图. > # 数据 > data <- as.matrix( ...

  8. R语言如何绘制小提琴图(10)

    1.什么是小提琴图? 小提琴图是箱线图的变种,展示了任意位置的密度,通过小提琴图可以知道哪些位置的密度较高. 外部形状即为核密度估计(在概率论中用来估计未知的密度函数,属于非参数检验方法之一). 本文 ...

  9. R EnhancedVolcano 绘制火山图

    火山图是用于差异表达分析结果可视化的一种有效方法.今天,我们来介绍一个用于增强火山图绘制的强大 R 包:EnhancedVolcano ,该包拥有强大的绘图功能,用户可以简单的通过设置颜色.形状.大小 ...

  10. R 绘制 GWAS 研究的 Manhattan 图

    曼哈顿图本质上是一个散点图,用于显示大量非零大范围波动数值,最早应用于全基因组关联分析(GWAS)研究展示高度相关位点.它得名源于样式与曼哈顿天际线相似(如下图). 近几年,在宏基因组领域,尤其是差异 ...

最新文章

  1. UVA - 1415 Gauss Prime(高斯素数)
  2. python selenium 鼠标移动到指定元素,并点击对应的元素
  3. php正规则表达式学习笔记(几个常用函数的区别)
  4. QT安装配置是注意事项
  5. 设计模式系列 - 原型模式
  6. 让你的单细胞数据动起来!|iCellR(二)
  7. 8-2:C++继承之父类和子类对象赋值转换(公有继承)也即切片
  8. openEuler Developer Day 启动大会招募环节,报名通道同步开启!
  9. 力扣112. 路径总和(JavaScript)
  10. 自考那些事儿(四):软件开发工具(理论篇)
  11. Type erroe in tensorflow
  12. oracle 表或视图不存在
  13. 如何写好PRD文档?
  14. c语言实现ftp客户端,下载ftp的文件内容信息
  15. excel两个表格数据对比_excel如何1秒钟合并两个不同表格数据?收下这个方法吧...
  16. 隐马尔科夫模型(二)
  17. c语言求最长单调子序列,设计一个O(n2)时间算法,找出由n个数组成的序列的最长单调递增子序列...
  18. 近几个月Github上最热门的Java项目一览
  19. Rvm 、Gem 实用指南
  20. socket是什么意思

热门文章

  1. CTC Loss和Focal CTC Loss
  2. jenkins停止僵尸作业Click here to forcibly terminate running steps
  3. 解决warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
  4. Win 10 清除恢复分区
  5. pr如何跳到关键帧_全套pr视频剪辑教程[叫兽七叔讲解]
  6. 同为前端工程师,待遇差别居然这么大!
  7. c语言正弦波程序_DAC0832的波形信号发生器Proteus仿真设计,正弦波、三角波、方波和锯齿波...
  8. 什么快捷键切换仅计算机,什么是电脑屏幕切换快捷键
  9. 定时执行Python程式
  10. ps批处理图片小技巧