我有一组X,Y数据点(约10k),很容易将其绘制为散点图,但我想将其表示为热图。
我浏览了MatPlotLib中的示例,它们似乎都已经从热图单元格值开始以生成图像。
有没有一种方法可以将所有不同的x,y转换为热图(其中x,y的频率较高的区域会“变暖”)?
如果你不想要六角形,可以使用numpy的histogram2d函数:
numpy
histogram2d
import numpy as np import numpy.random import matplotlib.pyplot as plt # Generate some test data x = np.random.randn(8873) y = np.random.randn(8873) heatmap, xedges, yedges = np.histogram2d(x, y, bins=50) extent = [xedges[0], xedges[-1], yedges[0], yedges[-1]] plt.clf() plt.imshow(heatmap.T, extent=extent, origin='lower') plt.show()
这将产生50x50的热图。如果你想要512x384,则可以bins=(512, 384)拨打histogram2d。
50x50
512x384
bins=(512, 384)