使用具有共享 x 軸的 Seaborn 繪制熱圖和線圖時,熱圖的刻度線被放置在熱圖條的中間。因此,底線圖將繼承熱圖刻度的位置和標簽,而不是反映真實數(shù)據(jù),因為線圖刻度應從零開始。換句話說,我需要將兩個圖的刻度線從 x 軸原點開始(最佳),或者將線圖向右移動熱圖像元寬度的一半,從而保留刻度位置和標簽(hacky)。下面的代碼快速重現(xiàn)了問題:f,[ax_heat,ax_line]=plt.subplots(nrows=2,figsize=(10, 8),sharex=True)data_heat = np.random.rand(4, 6)data_line= np.random.randn(6,1)sb.heatmap(data=data_heat,robust=True, center=0,cbar=False, ax=ax_heat)sb.lineplot(data=data_line, ax=ax_line)
2 回答

紫衣仙女
TA貢獻1839條經(jīng)驗 獲得超15個贊
這是一個笨拙的解決方案,但您可以將x軸向左移動寬度的一半:
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb
f,[ax_heat,ax_line]=plt.subplots(nrows=2,figsize=(10, 8),sharex=True)
data_heat = np.random.rand(4, 6)
data_line = np.random.randn(6,1)
# generalizable code regardless of spacing:
ax = sb.heatmap(data=data_heat,robust=True, center=0,cbar=False, ax=ax_heat)
width = ax.get_xticks()[1] - ax.get_xticks()[0]
new_ax = ax.get_xticks() - 0.5*width
ax.set_xticks(new_ax)
sb.lineplot(data=data_line, ax=ax_line)
plt.show()
添加回答
舉報
0/150
提交
取消