Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >全了!!曼哈顿图样样式、方法大汇总,超简单~~

全了!!曼哈顿图样样式、方法大汇总,超简单~~

作者头像
DataCharm
发布于 2022-10-25 02:20:36
发布于 2022-10-25 02:20:36
3.2K00
代码可运行
举报
运行总次数:0
代码可运行

最近小编在后台看到有的小伙伴留言咨询曼哈顿图(Manhattan Plot) 的绘制方法,小编一开始也是比较不了解,奈何我又是一个宠读者的小编,这就汇总了曼哈顿图(Manhattan Plot) R和Python的绘制方法,和大家一起进步。主要内容如下:

  • 曼哈顿图(Manhattan Plot)简介
  • 曼哈顿图(Manhattan Plot) R绘制方法
  • 曼哈顿图(Manhattan Plot) Python绘制方法

曼哈顿图(Manhattan Plot)简介

曼哈顿图(Manhattan Plot) 是一种散点图,通常用于显示具有大量数据点,许多非零振幅和更高振幅值分布的数据。(大家知道意思就可以了哈~~),样例如下:

曼哈顿图样例

曼哈顿图(Manhattan Plot) R绘制方法

使用R绘制曼哈顿图(Manhattan Plot) 的方法很多,这里主要介绍R-CMplot包的绘制方法,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(CMplot)
data(pig60K)   
data(cattle50K) 
# 这边的数据都是规整好的DF类型数据
#可视化绘制
CMplot(pig60K,type="p",plot.type="c",chr.labels=paste("Chr",c(1:18,"X","Y"),sep=""),r=0.4,cir.legend=TRUE,
        outward=FALSE,cir.legend.col="black",cir.chr.h=1.3,chr.den.col="black",
        file="jpg",memo="",dpi=600,file.output=TRUE,verbose=TRUE,width=10,height=10)

Example01 Of CMplot make

当然,你也可以通添加图例和修改颜色,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CMplot(pig60K,type="p",plot.type="c",r=0.4,col=c("grey30","grey60"),chr.labels=paste("Chr",c(1:18,"X","Y"),sep=""),
      threshold=c(1e-6,1e-4),cir.chr.h=1.5,amplify=TRUE,threshold.lty=c(1,2),threshold.col=c("red",
      "blue"),signal.line=1,signal.col=c("red","green"),chr.den.col=c("darkgreen","yellow","red"),
      bin.size=1e6,outward=FALSE,file="jpg",memo="",dpi=300,file.output=TRUE,verbose=TRUE,width=10,height=10)

Example02 Of CMplot make

你也可以绘制常规的曼哈顿图(Manhattan Plot),如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CMplot(pig60K,type="p",plot.type="m",LOG10=TRUE,threshold=NULL,file="jpg",memo="",dpi=300,
    file.output=TRUE,verbose=TRUE,width=14,height=6,chr.labels.angle=45)

Example03 Of CMplot make

  • 在曼哈顿图的底部附加染色体密度
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
CMplot(pig60K, plot.type="m", LOG10=TRUE, ylim=NULL, threshold=c(1e-6,1e-4),threshold.lty=c(1,2),
        threshold.lwd=c(1,1), threshold.col=c("black","grey"), amplify=TRUE,bin.size=1e6,
        chr.den.col=c("darkgreen", "yellow", "red"),signal.col=c("red","green"),signal.cex=c(1.5,1.5),
        signal.pch=c(19,19),file="jpg",memo="",dpi=300,file.output=TRUE,verbose=TRUE,
        width=14,height=6)

Example03 Of CMplot make with chromosome density

这里还有更多的关于CMplot包绘制曼哈顿图(Manhattan Plot)的小例子,具体就是CMplot()绘图函数中不同参数的设置。更多详细参数设置可参考:R-CMplot包官网[1]

曼哈顿图(Manhattan Plot) Python绘制方法

Python绘制曼哈顿图则需要进行必要的数据处理操作,详细内容如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from pandas import DataFrame
from scipy.stats import uniform
from scipy.stats import randint
import numpy as np
import matplotlib.pyplot as plt

# sample data
df = DataFrame({'gene' : ['gene-%i' % i for i in np.arange(10000)],
               'pvalue' : uniform.rvs(size=10000),
               'chromosome' : ['ch-%i' % i for i in randint.rvs(0,12,size=10000)]})

# -log_10(pvalue)
df['minuslog10pvalue'] = -np.log10(df.pvalue)
df.chromosome = df.chromosome.astype('category')
df.chromosome = df.chromosome.cat.set_categories(['ch-%i' % i for i in range(12)], ordered=True)
df = df.sort_values('chromosome')

# How to plot gene vs. -log10(pvalue) and colour it by chromosome?
df['ind'] = range(len(df))
df_grouped = df.groupby(('chromosome'))

# manhattan plot
fig = plt.figure(figsize=(10,4),dpi=100) 
ax = fig.add_subplot(111)

colors = ["#30A9DE","#EFDC05","#E53A40","#090707"]
x_labels = []
x_labels_pos = []
for num, (name, group) in enumerate(df_grouped):
    group.plot(kind='scatter', x='ind', y='minuslog10pvalue',color=colors[num % len(colors)], ax=ax)
    x_labels.append(name)
    x_labels_pos.append((group['ind'].iloc[-1] - (group['ind'].iloc[-1] - group['ind'].iloc[0])/2))
# add grid
ax.grid(axis="y",linestyle="--",linewidth=.5,color="gray")
ax.tick_params(direction='in',labelsize=13)
ax.set_xticks(x_labels_pos)
ax.set_xticklabels(x_labels)

ax.set_xlim([0, len(df)])
ax.set_ylim([0, 4])
# x axis label
ax.set_xlabel('Chromosome',size=14)
plt.savefig('Manhattan Plot in Python.png',dpi=900,bbox_inches='tight',facecolor='white')
plt.show()

Example Of Manhattan Plot in Python

以上就是对曼哈顿图(Manhattan Plot) 绘制R和Python小例子,希望对小伙伴们有所帮助~~。

总结

今天的这篇推文算是回应了读者的绘图需求,简单介绍了曼哈顿图(Manhattan Plot) 的R和Python绘制方法,希望能帮助到需要的小伙伴们~~

参考资料

[1]

R-CMplot包官网: https://github.com/YinLiLin/CMplot。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[864]mysql日期时间函数
sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:
周小董
2022/04/13
7.4K0
那些年我们的(具有含金量)MySQL测试题目
 请耐心阅读,下面有惊喜! 1.创建数据库 CREATE DATABASE QQDB; 2.创建各表(表结构;约束) /*******************创建********************/ USE QQDB; DROP TABLE IF EXISTS QQUser; CREATE TABLE QQUser ( qqid BIGINT PRIMARY KEY, PASSWORD VARCHAR(20) NOT NULL, lastlogtime DATETIME NOT NULL, onli
房上的猫
2018/03/14
1.2K0
Mysql 中的日期时间函数汇总
MySQL中内置了大量的日期和时间函数,能够灵活、方便地处理日期和时间数据,本节就简单介绍一下MySQL中内置的日期和时间函数。
跟着飞哥学编程
2023/02/10
19.2K0
Mysql 中的日期时间函数汇总
MySQL 获得当前日期时间 函数
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说MySQL 获得当前日期时间 函数,希望能够帮助大家进步!!!
Java架构师必看
2022/01/11
3.8K0
MySQL:日期函数、时间函数总结
获得当前日期+时间(date + time)函数:sysdate() sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了:
Java架构师必看
2021/12/19
3.1K0
MySQL 常用日期、时间函数介绍
MySQL 使用 DATE_FORMAT() 格式化日期,和格式化相关的函数还有 STR_TO_DATE()、TIME_FORMAT() 。
白日梦想家
2020/07/18
17.7K0
mysql计算时间
一、MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() ,current_timestamp ,localtime() ,localtime ,localtimestamp -- (v4.0.6) ,localtimestamp() -- (v4.0.6) 这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。 1.2 获得当前日期+时间(date + time)函数:sysdate() sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了: mysql> select now(), sleep(3), now(); +---------------------+----------+---------------------+ | now() | sleep(3) | now() | +---------------------+----------+---------------------+ | 2008-08-08 22:28:21 | 0 | 2008-08-08 22:28:21 | +---------------------+----------+---------------------+ mysql> select sysdate(), sleep(3), sysdate(); +---------------------+----------+---------------------+ | sysdate() | sleep(3) | sysdate() | +---------------------+----------+---------------------+ | 2008-08-08 22:28:41 | 0 | 2008-08-08 22:28:44 | +---------------------+----------+---------------------+ 可以看到,虽然中途 sleep 3 秒,但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒。MySQL Manual 中是这样描述 sysdate() 的:Return the time at which the function executes。 sysdate() 日期时间函数,一般情况下很少用到。 2. 获得当前日期(date)函数:curdate() mysql> select curdate(); +------------+ | curdate() | +------------+ | 2008-08-08 | +------------+ 其中,下面的两个日期函数等同于 curdate(): current_date() ,current_date 3. 获得当前时间(time)函数:curtime() mysql> select curtime(); +-----------+ | curtime() | +-----------+ | 22:41:30 | +-----------+ 其中,下面的两个时间函数等同于 curtime(): current_time() ,current_time 4. 获得当前 UTC 日期时间函数:utc_date(), utc_time(), utc_timestamp() mysql> select utc_timestamp(), utc_date(), utc_time(), now() +---------------------+------------+------------+---------------------+ | utc_timestamp() | utc_date() | utc_time() | now() | +---------------------+------------+------------+----------
王念博客
2019/07/24
5.4K0
MySQL操作命令大全
日期时间单位:year、month、week、day、hour、quarter、minute、second、microsecond 增加函数:date_add() 减少函数:date_sub()
程序员云帆哥
2022/05/12
7290
【黄啊码】mysql的基础函数,刚入门的你必须学会
select date_add(now(),interval 31 day); 返回'2014-10-13 11:10:17' ,这是31天后的日期。
黄啊码
2022/06/10
2890
【重学 MySQL】三十二、日期时间函数
GET_FORMAT函数中date_type和format_type参数取值如下:
用户11332765
2024/10/28
2320
【重学 MySQL】三十二、日期时间函数
MySQL时间戳与日期时间转换
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/151927.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/10
8.6K0
MYSQL语句大全
转载自 http://blog.csdn.net/a454832841/article/details/52814812
allsmallpig
2021/02/25
2.6K0
mysql日期函数
这里主要介绍一下mysql里面一些常用的日期函数,掌握了这些函数可以更好地编写sql语句。
johnhuster的分享
2022/03/28
6K0
MySQL单行函数详解
函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率,又提高了可维护性。在 SQL 中我们也可以使用函数对检索出来的数据进行函数操作。使用这些函数,可以极大地提高用户对数据库的管理效率。
timerring
2023/02/16
1.4K0
MySQL单行函数详解
MySQL中日期和时间函数学习--MySql语法
下面的例子使用了时间函数。以下询问选择了最近的 30天内所有带有date_col 值的记录:
用户1289394
2021/07/09
2.1K0
MySQL 日期函数大全(更新中.....)
解析:以年-月-日这种格式输出。%r代码am还是pm。am表示凌晨和上午,pm表示下午和晚上。(0:00-12:00)。
贵哥的编程之路
2022/11/16
4.3K0
MySQL 日期函数大全(更新中.....)
小白博客 MySQL日期时间函数大全
DAYOFWEEK(date) 返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准) mysql> select DAYOFWEEK('1998-02-03'); -> 3 WEEKDAY(date) 返回日期date是星期几(0=星期一,1=星期二,……6= 星期天)。 mysql> select WEEKDAY('1997-10-04 22:23:00'); -> 5 mysql> select WEEKDAY('1997-11-05'); -> 2 DAYOFMO
奶糖味的代言
2018/04/11
1.9K0
软件开发入门教程网之MySQL 函数
📒博客主页: ​​开心档博客主页​​ 📌本文由开心档原创! ✉️这世界很喧嚣,做自己就好! 🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢! ⭐本文介绍⭐ MySQL 有很多内置的函数,以下列出了这些函数的说明。 ​​MySQL 字符串函数​​ 函数 描述 实例 ASCII(s) 返回字符串 s 的第一个字符的 ASCII 码。 返回 CustomerName 字段第一个字母的 ASCII 码: ​​SELECT ASCII(CustomerName)
爱学iOS的小麦子
2023/01/03
4820
MySQL数据库,从入门到精通:第七篇——MySQL单行函数应用
在MySQL数据库中,函数是一种非常强大的功能,可以帮助我们对数据进行各种操作,例如进行数值计算、字符串格式化、日期时间处理等等。本文将全面介绍MySQL中的单行函数,涵盖数值函数、字符串函数、日期时间函数和加密解密函数等多个方面,帮助读者更好地理解和应用MySQL中的单行函数。
默 语
2024/11/20
1670
MySQL数据库,从入门到精通:第七篇——MySQL单行函数应用
MySQL日期和时间函数汇总
同一个日期时间会有多种不同的表示方式,有的时候需要在不同格式之间相互转换。在MySQL中用的是date_format()函数:
三分恶
2020/12/11
3.9K0
相关推荐
[864]mysql日期时间函数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验