如何在matplotlib中限制颜色栏的显示限制

时间:2019-01-07 14:48:37

标签: python matplotlib seaborn

我正在绘制时间序列测量的3个通道,这些通道或多或少地围绕(-80)。缺失的值用(-50)填充,以便它们获得亮黄色并与其余图形成对比。在数字上没有意义。参见下图和下面的代码:

f, ax = plt.subplots(figsize=(12.5, 12.5))
sns.heatmap(df.loc[:, ['Ch2', 'Ch3', 'Ch1']].fillna(-50)[:270], cmap='viridis', yticklabels=27, cbar=True, ax=ax)

如何保持颜色范围但限制显示比例(即,热图应保持不变,但颜色栏的范围仅从-70到-90)? enter image description here (请注意,关于如何Set Max value for color bar on seaborn heatmap的问题已经回答,但这不是我要解决的问题,我希望vmin和vmax保持原样)。

1 个答案:

答案 0 :(得分:2)

您可以设置颜色条轴的限制,类似于任何其他轴。

ax.collections[0].colorbar.ax.set_ylim(-90,-70)

完整示例:

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

data = np.random.rand(82*3)*20-90
data[np.random.randint(1,82*3, size=20)] = np.nan
df = pd.DataFrame(data.reshape(82,3))

ax = sns.heatmap(df, vmin=-90, vmax=-50, cmap="viridis")
ax.set_facecolor("gold")
ax.collections[0].colorbar.ax.set_ylim(-90,-70)
plt.show()

enter image description here