科学で描くことを学ぶ:Pythonのseabornモジュールは三角形のヒートマップを描きます

論文

26の多様なトウモロコシゲノムのdenovoアセンブリ、注釈、および比較分析

image.png

データとコードの一部は公開されています。本日の論文の補足資料で図S29を繰り返してみます。

image.png

このヒートマップは、Pythonのseabornモジュールを使用して描画されます。描画コードを以下に説明します。

必要なモジュールをインポートする

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

データセットを読み込む

いくつかのデータのスクリーンショットは次のとおりです

image.png
file = "matrix-b73-ref.csv"
b73Ref = pd.read_csv(file, index_col=0).reindex(["B97""Ky21""M162W"
                                                 "Ms71""Oh43""Oh7B""M37W""Mo18W""Tx303""HP301""P39",
                                                 "Il14H""CML52""CML69""CML103""CML228""CML247""CML277",
                                                 "CML322""CML333""Ki3""Ki11""NC350""NC358""Tzi8"])
b73Ref = b73Ref[["B97""Ky21""M162W"
                 "Ms71""Oh43""Oh7B""M37W""Mo18W""Tx303""HP301""P39"
                 "Il14H""CML52""CML69""CML103""CML228""CML247""CML277"
                 "CML322""CML333""Ki3""Ki11""NC350""NC358""Tzi8"]]

index_col=0データセットの最初の列を使用した行名は次のとおりです

reindx()機能は、独自のコンテンツに従って行を並べ替えることです

[[]]指定された内容に従って列を並べ替えることです

データセットの最初の5行を表示する

b73Ref.head(5)

最も基本的なヒートマップ

sns.heatmap(b73Ref)
image.png

下の三角形だけを保持します

ここで直接読み取られるデータセットのデータ型は整数型であり、データを浮動小数点型に変換する必要があります。論文で提供されているコードはデータ型を変換しません。彼のコードに従って完全に実行すると、エラーが発生する可能性があります。これは、Pythonのバージョンが異なることが原因である可能性があります。現在使用しているPythonは3.8.3です。

colnames = ["B97""Ky21""M162W"
                 "Ms71""Oh43""Oh7B""M37W""Mo18W""Tx303""HP301""P39"
                 "Il14H""CML52""CML69""CML103""CML228""CML247""CML277"
                 "CML322""CML333""Ki3""Ki11""NC350""NC358""Tzi8"]

dtype = {}

for colname in colnames:
    dtype[colname] = np.float64
    
df = b73Ref.astype(dtype)

mask = np.triu(np.ones_like(df,dtype=bool))

sns.heatmap(df,mask=mask)
image.png

色を変える

cmap = sns.diverging_palette(370, 120, n=80, as_cmap=True)
sns.heatmap(df, mask=mask, cmap=cmap, robust=True,
            square=True, linewidths=.5, cbar_kws={"shrink": .5})
image.png

補助線を追加し、y軸のタイトルを削除します

f, ax = plt.subplots(figsize=(14, 14))
cmap = sns.diverging_palette(370, 120, n=80, as_cmap=True)
sns.heatmap(df, mask=mask, cmap=cmap, robust=True,
            square=True, linewidths=.5, cbar_kws={"shrink": .5})
plt.ylabel('')
ax.axvline(x=6, color ='blue', lw = 1.5, alpha = 0.75, ymax = 0.76)
ax.axvline(x=9, color ='blue', lw = 1.5, alpha = 0.75, ymax = 0.64)
ax.axvline(x=10, color ='blue', lw = 1.5, alpha = 0.75, ymax = 0.6)
ax.axvline(x=12, color ='blue', lw = 1.5, alpha = 0.75, ymax = 0.52)
ax.axhline(y=6, color ='black', lw = 1.5, alpha = 0.75, xmax = 0.24)
ax.axhline(y=9, color ='black', lw = 1.5, alpha = 0.75, xmax = 0.36)
ax.axhline(y=10, color ='black', lw = 1.5, alpha = 0.75, xmax = 0.4)
ax.axhline(y=12, color ='black', lw = 1.5, alpha = 0.75, xmax = 0.48)
image.png

軸のラベルに色を付けます

f, ax = plt.subplots(figsize=(14, 14))
cmap = sns.diverging_palette(370, 120, n=80, as_cmap=True)
sns.heatmap(df, mask=mask, cmap=cmap, robust=True,
            square=True, linewidths=.5, cbar_kws={"shrink": .5})
plt.ylabel('')
ax.axvline(x=6, color ='blue', lw = 1.5, alpha = 0.75, ymax = 0.76)
ax.axvline(x=9, color ='blue', lw = 1.5, alpha = 0.75, ymax = 0.64)
ax.axvline(x=10, color ='blue', lw = 1.5, alpha = 0.75, ymax = 0.6)
ax.axvline(x=12, color ='blue', lw = 1.5, alpha = 0.75, ymax = 0.52)
ax.axhline(y=6, color ='black', lw = 1.5, alpha = 0.75, xmax = 0.24)
ax.axhline(y=9, color ='black', lw = 1.5, alpha = 0.75, xmax = 0.36)
ax.axhline(y=10, color ='black', lw = 1.5, alpha = 0.75, xmax = 0.4)
ax.axhline(y=12, color ='black', lw = 1.5, alpha = 0.75, xmax = 0.48)
mycol = ["#4169E1""#4169E1""#4169E1""#4169E1""#4169E1""#4169E1""#787878""#787878""#787878""#DA70D6""#FF4500""#FF4500""#32CD32""#32CD32""#32CD32""#32CD32""#32CD32""#32CD32""#32CD32""#32CD32""#32CD32""#32CD32""#32CD32""#32CD32""#32CD32"]
for tick, color in zip(ax.get_xticklabels(), mycol): tick.set_color(color)
for tick, color in zip(ax.get_yticklabels(), mycol): tick.set_color(color)

plt.savefig("1.pdf")
image.png

これが最終結果です

私の公開番号に注意を払うためにみんなを歓迎します

XiaoMingのデータ分析ノート

Xiaomingのデータ分析ノートブックの公開アカウントは主に次のことを共有しています。1。データ分析とデータ視覚化のためのR言語とpythonの簡単な例;2。トランスクリプトミクス、ゲノミクス、人口遺伝学の文献に関連する園芸植物に関するメモを読む;3.バイオインフォマティクス入門研究資料を学ぶあなた自身の研究ノート!


この記事は、WeChatのパブリックアカウントであるXiao Mingのデータ分析ノートブック(gh_0c8895f349d3)から共有されています。
侵害がある場合は、[email protected]に連絡して削除してください。
この記事は「OSC元川プロジェクト」に参加していますので、ぜひご参加ください。

{{o.name}}
{{m.name}}

おすすめ

転載: my.oschina.net/u/4579431/blog/5231140