簡體   English   中英

x 軸上的 Seaborn 熱圖間距

[英]Seaborn heatmap spacing on x axis

我目前正在使用 seaborn.heatmap() 來顯示我在 pandas.DataFrame 中組織的二進制數據。 DataFrame的索引是離散的,對應不同的位置,而列是連續的,代表時間。 如何使熱圖中的 x 軸在測量值之間具有正確的間距?

更准確地說,我希望 0 和 1'000 之間的差異比 0 和 1 之間的差異大 1'000 倍,以及 1 和 1.1 之間的差異大 10'000 倍。 以下是我的數據組織方式的最低限度:

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

df=pd.DataFrame(np.random.randint(0,2,size=(5, 8)), columns=[1,1.1,2,3,4,1001,1002,1003], index=['A','B','C','D','E'])
sns.heatmap(df,cmap='binary', square=True)

生成的圖像如下所示: https : //i.stack.imgur.com/uxSrH.png

測量值之間的數據(例如,對於不屬於 DataFrame 的測量值 500 應為 0。我不介意放棄 square=True。

對於那些想知道的人,0/1 是 False/True 陳述,表明我是否在給定時間在此位置的此采樣點進行了測量。

非常感謝

您可以使用plt.pcolor() ,它創建一個不均勻間隔的網格,網格線由其第一個和第二個參數提供。 由於 5x8 單元格網格需要 6x9 網格線,因此 x 值和 y 值列表都需要擴展 1。

該示例使用101而不是1001 ,因為 1000 的因子差異將使所有東西都拉到一條細線上,除了 4 和 1001 之間的區域。

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

# slightly modified example data
df = pd.DataFrame(np.random.randint(0, 2, size=(5, 8)), columns=[1, 1.1, 2, 3, 4, 101, 102, 103],
                  index=['A', 'B', 'C', 'D', 'E'])
plt.pcolor(list(df.columns) + [2 * df.columns[-1] - df.columns[-2]],
           np.arange(len(df.index)+1),
           df.values, cmap='binary')
plt.yticks(np.arange(0.5, len(df.index)), df.index) # labels between the grid lines
plt.show()

plt.pcolor 創建網格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM