前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >不用R语言!Python也可以绘制出论文专属和弦图啦~~

不用R语言!Python也可以绘制出论文专属和弦图啦~~

作者头像
DataCharm
发布2024-07-05 16:53:40
940
发布2024-07-05 16:53:40
举报
  • 前言

  • 一、「pycirclize」-Python快速绘制和弦图工具
  • 二、可视化学习圈子是干什么的?
  • 三、系统学习可视化
  • 四、猜你喜欢

前言

我们的数据可视化课程已经上线啦!!目前课程的主要方向是 科研、统计、地理相关的学术性图形绘制方法,后续也会增加商务插图、机器学等、数据分析等方面的课程。课程免费新增,这点绝对良心!

我们第一个数据可视化交流圈子也已经上线了,主要以我的第一本书籍《科研论文配图绘制指南-基于Python》为基础进行拓展,提供「课堂式」教学视频,还有更多拓展内容,可视化技巧远超书籍本身,书籍修正和新增都会分享到圈子里面~~

参与课程或者圈子的你将获取到:学员答疑、可视化资源分享、可视化技巧补充、可视化业务代做(学员和甲方对接)、副业交流、提升认知等等。

「pycirclize」-Python快速绘制和弦图

在我们学员交流群中,很多同学都反映书籍中或者课程中使用Python绘制和弦图(Chord Diagram)的方法较为繁琐,且绘制样式有限,那么Python中有没有其他好用的绘制方法呢?

其实,在针对书籍中的很多内容,我们都在进行「迭代和更新」,不仅是因为书籍出版的延迟性导致代码版本较老,同时也是因为要加入很多新的内容。

今天,我们就同学提出的和弦图绘制方法,介绍一个全新的绘制工具-「pycirclize」

  • pycirclize工具包介绍

pycirclize软件包其实我们在之前的推文中有介绍过,但今天我们只介绍其绘制和弦图的绘制函数-「Circos()」

可通过如下方式进行快速安装:

代码语言:javascript
复制
pip install pycirclize

pycirclize软件包可以像R语言中的circlize一样对矩阵数据(matrix data)进行和弦图的绘制。下面就介绍下Circos()函数的绘图功能。

  • Circos()函数可视化案例
  1. 案例01(3 x 6)
代码语言:javascript
复制
from pycirclize import Circos
import pandas as pd

# Create matrix dataframe (3 x 6)
row_names = ["S1", "S2", "S3"]
col_names = ["E1", "E2", "E3", "E4", "E5", "E6"]
matrix_data = [
    [4, 14, 13, 17, 5, 2],
    [7, 1, 6, 8, 12, 15],
    [9, 10, 3, 16, 11, 18],
]
matrix_df = pd.DataFrame(matrix_data, index=row_names, columns=col_names)

# Initialize from matrix (Can also directly load tsv matrix file)
circos = Circos.initialize_from_matrix(
    matrix_df,
    start=-265,
    end=95,
    space=5,
    r_lim=(93, 100),
    cmap="tab10",
    label_kws=dict(r=94, size=12, color="white"),
    link_kws=dict(ec="black", lw=0.5),
)

print(matrix_df)
fig = circos.plotfig()
  1. 案例01(10 x 10)
代码语言:javascript
复制
from pycirclize import Circos
import pandas as pd

# Create matrix data (10 x 10)
row_names = list("ABCDEFGHIJ")
col_names = row_names
matrix_data = [
    [51, 115, 60, 17, 120, 126, 115, 179, 127, 114],
    [108, 138, 165, 170, 85, 221, 75, 107, 203, 79],
    [108, 54, 72, 123, 84, 117, 106, 114, 50, 27],
    [62, 134, 28, 185, 199, 179, 74, 94, 116, 108],
    [211, 114, 49, 55, 202, 97, 10, 52, 99, 111],
    [87, 6, 101, 117, 124, 171, 110, 14, 175, 164],
    [167, 99, 109, 143, 98, 42, 95, 163, 134, 78],
    [88, 83, 136, 71, 122, 20, 38, 264, 225, 115],
    [145, 82, 87, 123, 121, 55, 80, 32, 50, 12],
    [122, 109, 84, 94, 133, 75, 71, 115, 60, 210],
]
matrix_df = pd.DataFrame(matrix_data, index=row_names, columns=col_names)

# Initialize from matrix (Can also directly load tsv matrix file)
circos = Circos.initialize_from_matrix(
    matrix_df,
    space=3,
    r_lim=(93, 100),
    cmap="tab10",
    ticks_interval=500,
    label_kws=dict(r=94, size=12, color="white"),
)

print(matrix_df)
fig = circos.plotfig()

可以看出,每个组成部分都有对应的刻度属性,特别适合论文配图使用呢。

  1. 案例03
代码语言:javascript
复制
from pycirclize import Circos
from pycirclize.parser import Matrix
import pandas as pd

# Create from-to table dataframe & convert to matrix
fromto_table_df = pd.DataFrame(
    [
        ["A", "B", 10],
        ["A", "C", 5],
        ["A", "D", 15],
        ["A", "E", 20],
        ["A", "F", 3],
        ["B", "A", 3],
        ["B", "G", 15],
        ["F", "D", 13],
        ["F", "E", 2],
        ["E", "A", 20],
        ["E", "D", 6],
    ],
    columns=["from", "to", "value"], # Column name is optional
)
matrix = Matrix.parse_fromto_table(fromto_table_df)

circos = Circos.initialize_from_matrix(
    matrix,
    space=3,
    cmap="viridis",
    ticks_interval=5,
    label_kws=dict(size=12, r=110),
    link_kws=dict(direction=1, ec="black", lw=0.5),
)

print(fromto_table_df.to_string(index=False))
fig = circos.plotfig()

系统学习可视化

当然,在学习数据可视化的道路上,你也有很多问题得不到解答,也可以加入我们的可视化课程(可视化系列课程推文)后,在学员群里和大家一起谈论,一起进步,或者直接向我提问。如果我觉得你的问题很具有普适性,我会把它写成文章发布在公众号上,让更多人看到,有关我们数据可视化系列课程的服务内容,可以参考下面的 阅读原文

猜你喜欢

不是?!这种图一行代码就搞定了,超简单....

这图这么多人问!?赶紧给大家复现出来~~..

ggpubr!一键绘制出版级论文配图,绘图小白福音......

tidyterra!空间数据处理、可视化神器...

Antarctic-Plots!不用ArcGIS,我照样可以画出惊艳的地图...

比Matplotlib合并子图更方便!patchworklib让我告别PS拼图...

Xarray,不用ArcGIS,所有地理空间绘图全搞定...

Nature都推荐的箱线图(Boxplot)绘制工具长啥样?免费、在线、灵活操作...?

完美解决Matplotlib绘图中、英文字体混显问题..

MATLAB绘图不好看?!不是,你是还没发现这几个工具包吧..

不是,这个地理数据工具这么强的吗?数据处理、可视化它都行..

这种环形图太难画?!带你一行代码搞定..

不是,这封面图这么多人问的吗?教程来了

不用Seaborn,这个工具也能绘制超炫的统计图形···

NetworkX,网络结构图最强绘制工具·····

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 「pycirclize」-Python快速绘制和弦图
  • 系统学习可视化
  • 猜你喜欢
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档