在 Python 中绘制具有非常不同范围的数据的二维直方图

Plotting 2d histogram of data with very different ranges in Python

我尝试使用以下代码绘制范围非常不同的二维数据直方图。但是因为数据范围不同,x数据重叠如下图。是否有任何解决方案可以绘制具有相同轴长的 x 和 y 数据?

import numpy as np
from matplotlib import pyplot as plt
plt.clf()
x = np.random.randint(low=0, high=10, size=8873)
y = np.random.randint(low=100000,high=600000, size=8873)
heatmap, xedges, yedges = np.histogram2d(x, y, bins=50)
extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]]

plt.imshow(heatmap.T, extent=extent, origin='lower')
plt.show()

请注意,imshow() 默认将纵横比设置为 1,将其更改为 auto 应该可以解决您的问题。您还可以根据范围计算自己的纵横比以获得例如方形图像。

aspect = (extent[1] - extent[0]) / (extent[3] - extent[2])
plt.imshow(heatmap.T, extent=extent, origin='lower', aspect=aspect)
# plt.imshow(heatmap.T, extent=extent, origin='lower', aspect='auto')