我有一堆xz
数据集,我想使用这些文件创建热图,其中y
轴是在数据集之间更改的参数。问题是每个数据集中的x
值是不同的。此外,每个数据集中x
值之间的差异不固定(例如x[100] - x[99] =/= x[200]-x[199]
)。我知道我可以插入数据,生成网格,然后使用imshow
来显示数据,问题是是否有更直接的解决方案?
答案 0 :(得分:1)
您可以使用pcolormesh
图。这适用于常规(即,排序的,直线的,但不一定等间距的)网格。
以下是一个例子:
import matplotlib.pyplot as plt
import numpy as np; np.random.seed(1)
x = np.array([1,1.5,3,4,5,5.5])
y = np.array([-1,0,2,3.6,4])
X,Y = np.meshgrid(x,y)
Z = np.random.randint(1,11, size=(len(y), len(x)))
plt.pcolormesh(X,Y,Z)
plt.plot(X[1,2],Y[1,2] , marker="o", color="crimson")
plt.text(X[1,2],Y[1,2], str(Z[1,2]), color="crimson", fontsize=20)
plt.colorbar()
plt.show()
请注意Z[i,j]
中的值绘制在从位置X[i,j],Y[i,j]
到X[i+1,j+1],Y[i+1,j+1]
的单元格中。因此网格点是单元格边缘
这也意味着如果X,Y,Z
具有相同的形状,则不会绘制Z
的最后一行和一列。但是,您可以提供一个网格,该网格在两个扩展中都比值数组Z
大一个。
为了研究不同参数的不同图,您可以使用我在此答案中提出的技术:Paging/scrolling through set of 2D heat maps in matplotlib。