【发布时间】:2021-05-25 11:48:46
【问题描述】:
我有以下数据框:
val1=np.random.rand(234)
val2=np.random.rand(234)
val3=np.random.rand(234)
wave=np.arange(start=300, stop=1000, step=3)
labels=['label1','label2','label3']
df=pd.DataFrame([val1,val2,val3],columns=wave)
df['labels']=['label1','label2','label3']
df=df.set_index('labels')
还有下面一行:
line=np.random.uniform(low=-1.5, high=1.5, size=(234,))
line_df=pd.DataFrame([wave,line]).T
line_df.columns=['wave','val']
我想用标签创建热图,并在每个标签行中绘制线,作为辅助轴,如下所示:
我在热图顶部画了一条线(理论上假设是同一条线)。
我可以通过这种方式创建热图,但不能为每个标签画线:
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(rc={'figure.figsize':(25,8.7)},font_scale = 2)
ax =sns.heatmap(df,cmap='Reds').set(title='heatmap')
ax2=plt.twinx()
ax2.plot(line_df['wave'], line_df['val'],color="blue",linewidth=3)
寻找为每个标签添加同一行的想法。
【问题讨论】:
-
一个想法是创建 3 个共享 x 且它们之间的距离为零的子图。这样你就可以在右边有 3 个不同的 y 轴。 (还要注意
ax=sns.heatmap(df,cmap='Reds').set(title='heatmap')使axNone。你需要ax =sns.heatmap(df,cmap='Reds')然后ax.set(title='heatmap')。)
标签: python matplotlib seaborn heatmap line-plot