ggplot进行曼哈顿图复现

最近看文献的时候看到一张曼哈顿图,是对绵羊进行种间fst的比较找受选择的位点,当时看到这张图就感觉与之前看过的曼哈顿与众不同,图中用线段来表示的具体数值而不是常规的点,看多了点图,感觉线图还挺好看,所以就想复现一下,顺便当记个笔记了。
不知道这种图有没有具体的包,之前见过棒棒糖图,还是很相似的。不过不用考虑那么多,万图皆可ggplot,基本上看到的图都能用ggplot的绘制,所以我就用ggplot复现吧。
在这里插入图片描述
主要用到的是ggplot中的geom_segment(),这个函数是用来画线段的,之前我我一般用annotate中的geom='segment’来画线段,因为至此是变量批量的画,所以当然要换成geom_segment(),geom_segment()与常规绘图函数不同,它需要四个坐标,即x,xend,y,yend,我们只需要固定某一方向就可以绘制出想要的线段。

rm(list=ls())
options(stringsAsFactors = F)library(ggplot2)
ggplot()+geom_segment(aes(x=1:5,xend=1:5,y=0,yend=seq(0,0.8,0.2)))+ylim(0,1) #随便找几个数

在这里插入图片描述

可以看到上图,把x和xend设置为相同,y设置为0,具体大小赋予yend就能产生竖线,这样进一步绘图。
首先就是准备数据,随机产生1万个数据,然后分为500个一组,共20组,并且交替赋予A和B字符,用于颜色分组。

data=data.frame(s1=1:10000,s2=runif(10000,0,0.3)+runif(10000,0,0.5),s3=rep(rep(c('A','B'),10),each=500))
data$s1=as.character(data$s1) #把数值型转换为字符型,用于排列顺序
#runif(min,max,n)  随机生成min到max之间的n个小数
#s1是x轴位置
#s2为y轴大小
#s3为颜色分组

在这里插入图片描述

注意s1为x位置,我一般要把它转换为字符型,这样在ggplot中可以进行离散型数据的设置,因为数值型数据是连续的数据,在x轴设置时如果数据中间有缺失部分会导致x轴无法紧密排列,而离散型数据则始终紧密排列。
数值型连续数据如下,可以看到根据根据数值大小进行排列,如果中间数据没有连续(2,5),则会产生空缺。
在这里插入图片描述
字符型离散数据如下,可以看到自始至终的排列紧密的,虽然只有2和5,但是两者排列紧密。
在这里插入图片描述
之后就是绘图

ggplot(data = data)+geom_segment(aes(x =s1, y =0,xend =s1, yend =s2,color=s3),linetype=1,size=0.1)

在这里插入图片描述

初步的图就是这样,很粗糙,需要进一步修改。

ggplot(data = data)+geom_segment(aes(x =s1, y =0,xend =s1, yend =s2,color=s3),linetype=1,size=0.1)+scale_color_manual(values = c('#fa450f','#242b66'))+ #颜色设置scale_y_continuous(expand = c(0,0),limits =c(0,1),breaks=seq(0,1,0.2))+scale_x_discrete(expand = c(0,0),breaks=seq(250,10000,500),labels=paste0('chr',1:20),limits=as.character(c(1:10000)))+ #设置x轴breaks和labelstheme_classic()+ #经典主题labs(x='chromosome',y='score')+ #x轴y轴labtheme(legend.position = 'none')+ #去除图例annotate(geom = 'segment',x=0,xend=nrow(data),y=quantile(data$s2,0.95), #添加阈值线yend=quantile(data$s2,0.95),lty=4,color='black')

因为是随机的数据,没有染色体之分,所以我把每500个数据设置为一条染色体,共设置20条染色体。然后添加个阈值吧,用quantile函数找到在数据中前95%的数据大小,用annotate去添加,然后设置一下阈值线样式(lty)和颜色,最后把生成的结果给它拉长压扁一下,用ggsave保存一下就ok了,我感觉这基本还原科,就是数据不够离散,看不出什么峰值,不过也算可以了。
在这里插入图片描述

在实际应用的时候需要加入染色体号,这时候就需要先把每条染色体的数据中的位点从小到大排列一下,然后赋予每个位点一个label,然后在scale_x_discrete中设置limits定义一下顺序就好,在每条染色体数据中间再用breaks加上label就ok了。
感觉绘图还是比较简单的,之前讲过CMplot绘制曼哈顿,感觉自己也可以找个时间研究研究,也设计个绘图包,把各种图形的绘制代码集合起来,这可比设置一种新的算法什么的简单太多了,可以尝试。

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

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

相关文章

图幅号与经纬度的换算

图幅号,如“I48E001004”,一般为10位数。 前三位“I48”表示所属1:100万图幅的行列号 ,地图基本都是在1:100万比例尺的行列式编号基础上划分的。 1:100万图幅的划分规则: 纬度行:从赤道开始算,纬度四度一行,南北纬各22行,用大写英文字母A,B,C…表示(南半球要在字母…

rtx2060为什么叫智商卡_八款RTX2060简单点评,谁是丐中丐,谁又是丐帮帮主

RTX2060上市也有一段时间了,各种大神也做了一系列的测试,结果让人非常吃惊,旗舰2060性价比还是太低了,认可度也很低,主要还是3000以下的受关注比较多。 蜗牛也看了一下评测,大致的结果是这样的 大家可以看一下频率和温度,价格不可靠,偏差比较大。 老实说呀,看了这个评…

学习笔记:设计模式-装饰器设计模式(JAVA)

概念 装饰器设计模式,也叫包装设计模式,他是作为现有类的一个包装,允许向一个现有的对象添加新的功能,同时又不改变其结构。给对象添加功能,一般两种方式,继承或者组合,将一个类的对象嵌入到另一…

HTML+CSS基本使用与操作(万字没有,万图快了o(╥﹏╥)o)

往期: JAVA 修炼秘籍第一章:《痛苦的折磨》 JAVA 修炼秘籍第二章:《逐渐魔化》 JAVA 修炼秘籍第三章:《绝地反击》 JAVA 修炼秘籍第四章:《闭关修炼》 JAVA 修炼秘籍第五章:《卧薪尝胆》 JAVA 修炼秘籍第六…

如何在10万张图片中快速找出有二维码的图片(万图找码)

前段时间有一老哥加我微信,问有没有一种软件,能在文件夹里的上万张图片中快速地找出有二维码的图片。 我帮他找了一下,没找到这种软件,我说我做一个试试看,于是就有了这个软件,起名字叫做《万图找码》&…

SVC进行图像识别——万图识别

1.导入模块 import numpy as np import pandas as pd from pandas import Series,DataFrame #SVC知识向量机学习模型 from sklearn.svm import SVC #读取二进制文件模块 import pickle as pickle #数据降维处理模块 from sklearn.decomposition import PCA #绘图模块 import m…

Chatgpt如何引入新的知识?我们来看下ACL2023 预训练模型能否对新注入的知识进行推理这篇文章

一、概述 title:Can LMs Learn New Entities from Descriptions? Challenges in Propagating Injected Knowledge 论文地址:https://arxiv.org/abs/2305.01651 相关代码: EKP数据和代码:GitHub - yasumasaonoe/entity_knowle…

计算机SCI期刊审稿人,一般关注论文的那些问题? - 易智编译EaseEditing

编辑主要关心: (1)文章内容是否具有足够的创新性? (2)文章主题是否符合期刊的受众读者? (3)文章方法学是否合理,数据处理是否充分? (…

让AI替你打工?GPT提升开发效率指南

👉导读 开发者日常的整个工作流中,AI 大模型能做什么?ChatGPT 等 AI 大模型能不能通过开发者的指引,一步步完成从技术方案输出、编码、测试、发布到运营维护的整套流程?使用中有什么避坑点?本文从实际研发流…

开源协议,曝出重大问题,目前无解

出品 | OSC开源社区(ID:oschina2013) 《The Register》发布了探讨更新开源许可证的文章。作者的观点正如文章标题所言:开源许可证需要摆脱 20 世纪 80 年代的束缚,并不断发展以应对人工智能。 他指出,自由软件和开源许…

网课录屏用什么软件好?Camtasia极简操作,课程重点一目了然

后疫情时代,线上线下相结合的课程形式越来越火。身为人名教师这两年明显感觉压力倍增啊,以前同事之间聊工作都是你的备课笔记拿来看看呢,现在都变成了你的录课视频让我参考参考呢。 为了给学生输出高质量的课堂内容,一款好用的录…

解码聊天机器人技术:权威指南

关键词:聊天机器人、跨境电商客户服务 作为一个跨境电商品牌您需要知道,当品牌在一分钟内回答客户的问题时,59% 的客户更有可能完成购买。 Business Insider 的一项研究还发现,只要您提供的客户服务有效、方便、快捷,…

全球首个AI合成主播发布,效果以假乱真!揭秘背后技术原理

边策 李根 发自 凹非寺 量子位 报道 | 公众号 QbitAI 搜狗又在乌镇世界互联网大会上搞了大新闻。 2016年,王小川在正式论坛里秀出AI同传,那是机器实时翻译技术,首次在高规格国际会议上实战应用。 而这一次,依然世界互联网大会&…

Python控制AI虚拟主播说话聊天源码分享

Python是非常简单可用的脚本语言,本次我们将介绍如何实用Python控制一个AI虚拟主播说话聊天。通过分析目前市场上可用的虚拟主播软件,发现Motionface是一个简单可用的虚拟主播软件,它提供简单的http接口,是实时响应的,不像其他虚拟主播软件(baidu,xunfei等)需要很高的算…

AI虚拟主播软件系统 搭建24小时不间断运营的数字人直播间的操作教程分享

现在直播都必须真人直播,没法做到24小时不间断直播。虚拟人直播系统,一天24小时在线直播,不要吃饭,也不要工资,每时每刻都在赚音浪,带货,那么具体AI虚拟主播软件是怎么操作的呢?今天…

虚拟主播怎么做出来的?今日安利:AI虚拟人物怎么弄?

某天,一位品牌店的老板向我寻求帮助,大概内容就是:“他最近要开拓线上店铺的直播渠道,直播时间较长,雇一位主播又费钱又辛苦,想制作一个符合品牌调性的AI虚拟人物来带货。”于是我跟他分享了制作虚拟主播的…

一文了解虚拟人主播

这两年,相信很多人都能在抖音、快手、微视等平台看到虚拟人主播的视频,形象逼真,表情动作自然,语言流畅,乍一看,就是一位真人!那为什么会有这么多人或者企业选择用虚拟人来做主播呢?…

AI虚拟主播数字人技术实现Wav2Lip【附完整版教程】及【效果评测】

前言 建议直接阅读飞书文档:Docshttps://yv2c3kamh3y.feishu.cn/docx/S5AldFeZUoMpU5x8JAuctgPsnfg 近期很多饱子私信,想知道关于AI数字人主播的技术实现。现本篇就AI数字人虚拟主播的Wav2Lip技术进行实现与评测,后续还会有其他的相关技术实现…

什么是虚拟主播?虚拟数字人直播,不用出镜,不用露脸的直播方式

“虚拟主播”(Virtual Youtuber,简称Vtuber)是于2016年在Youtube等视频平台新出现的一类非真实视频主播。此类主播无需真人露脸,视频主体角色多为3D建模,是以依靠数字技术、人声、动作结合后的新产物。截止2018年7月&a…

虚拟主播频繁爆火,想了解虚拟主播的制作过程看这里

随着元宇宙概念的火热,以及我国经济向全面数字化发展转型,作为元宇宙入口的虚拟数字人是目前相关产业中最接地气、最先落地的产业。如果说虚拟人是一座冰山,那么我们看到的部分就是冰山水面以上的部分,而看不到的水面以下则是支撑…