我正在尝试创建两个变量的热图。代码的问题部分看起来像这样:
import numpy as np
import matplotlib.pyplot as plt
x = [0.99, 0.98, 0.99, 1, 1]
y = [1, 1, 0.5, 0.8, 1]
heatmap, xedges, yedges = np.histogram2d(x, y, bins=50)
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]
plt.clf()
plt.imshow(heatmap, extent=extent, origin="lower")
plt.show()
这里我只使用了我要绘制的数据的前几行。两个变量中的一个非常聚集在0.95-1附近,而另一个变量则更自由地运行(它甚至可以达到数十万个)。问题是输出如下图所示。
我想加宽x轴,这样我就可以更详细地看到正在绘制的区域。我已经尝试使用axis()
命令,但它只是添加了空格(即没有数据的空格)。有办法吗?
答案 0 :(得分:3)
如果您打算使用extent
请注意
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]
给出extent=[0.99,1,1,1]
。您应该将其更改为:
extent = [min(xedges), max(xedges), min(yedges), max(yedges)]
您可能还会发现plt.axis("equal")
有用。默认情况下,imshow
也会进行插值,这通常不是您想要的。参数interpolation="none"
阻止了这一点。这个相关问题可能会解决您的更多问题: