我尝试使用相同的代码使用matplotlib
创建多个热图。当然,所有这些热图的数据都不同。因此,热图上的颜色强度也不同。有没有办法确保强度范围保持不变?热图中的所有值都介于0和1之间。因此,我希望0.2
中值heatmap1
的颜色与0.2
中的值heatmap2
的颜色完全相同1}},即使两个热图都有不同的范围。
我为这个问题有点令人困惑的语言道歉,但我不知道如何更好地解释它。
这是我用来生成热图的代码:
from matplotlib import pyplot as plt
def show_values(pc, fmt="%.2f", **kw):
'''
Heatmap with text in each cell with matplotlib's pyplot
Source: http://stackoverflow.com/a/25074150/395857
By HYRY
'''
# from itertools import izip
try:
# Python 2
from itertools import izip
except ImportError:
# Python 3
izip = zip
pc.update_scalarmappable()
ax = pc.get_axes()
for p, color, value in izip(pc.get_paths(), pc.get_facecolors(), pc.get_array()):
x, y = p.vertices[:-2, :].mean(0)
if np.all(color[:3] > 0.5):
color = (0.0, 0.0, 0.0)
else:
color = (1.0, 1.0, 1.0)
ax.text(x, y, fmt % value, ha="center", va="center", color=color, **kw)
df= pd.read_csv("filepath", header=None)
fig, ax = plt.subplots(figsize=(20, 10))
heatmap = plt.pcolor(df,cmap=matplotlib.cm.Blues)
ax.set_yticks(np.arange(df.shape[0]) + 0.5, minor=False)
ax.set_xticks(np.arange(df.shape[1]) + 0.5, minor=False)
ax.set_xticklabels(xlabels, minor=False, rotation=45)
ax.set_yticklabels(ylabels, minor=False)
plt.ylim( (0, df.shape[0]) )
plt.gca().invert_yaxis()
plt.title("plot title")
show_values(heatmap)
plt.show()
非常感谢任何帮助。
答案 0 :(得分:1)