<p>在<em>Matplotlib</em>字典中,我想您需要一个<strong>hexbin</strong>绘图。</p>
<p>如果您不熟悉这种类型的绘图,它只是一个<em>二元直方图</em>其中xy平面由规则的六边形网格细分。</p>
<p>所以从柱状图上,你可以计算每个六边形中的点数,将绘图区域离散化为一组<em>窗口</em>,将每个点分配给其中一个窗口;最后,将窗口映射到一个<em>颜色数组</em>,得到一个hexbin图。</p>
<p>尽管不像圆或正方形那样常用,但六边形是装箱容器几何结构的更好选择,这是直观的:</p>
<ul>
<li><p>六边形具有近邻对称性,
e、 从正方形边界上的一点到另一点的距离
在这个正方形内,并非所有地方都相等)和</p></li>
<li><p>六边形是最高的n多边形,它给出<em>正平面
镶嵌</em>(即,您可以使用六边形瓷砖安全地重新建模厨房地板,因为完成后瓷砖之间不会有任何空隙——对于所有其他更高的n,n>;=7,多边形来说不是这样)。</p></li>
</ul>
<p>(<em>Matplotlib</em>使用术语hexbin</em>plot;对于<em>R</em>的所有{a1}也是(AFAIK);我仍然不知道这是否是这类图的普遍接受的术语,尽管我怀疑可能是因为<em>hexbin</em>是<em>六角形binning</em>的缩写,这描述了准备显示数据的基本步骤。)</p>
<hr/>
<pre><code>from matplotlib import pyplot as PLT
from matplotlib import cm as CM
from matplotlib import mlab as ML
import numpy as NP
n = 1e5
x = y = NP.linspace(-5, 5, 100)
X, Y = NP.meshgrid(x, y)
Z1 = ML.bivariate_normal(X, Y, 2, 2, 0, 0)
Z2 = ML.bivariate_normal(X, Y, 4, 1, 1, 1)
ZD = Z2 - Z1
x = X.ravel()
y = Y.ravel()
z = ZD.ravel()
gridsize=30
PLT.subplot(111)
# if 'bins=None', then color of each hexagon corresponds directly to its count
# 'C' is optional--it maps values to x-y coordinates; if 'C' is None (default) then
# the result is a pure 2D histogram
PLT.hexbin(x, y, C=z, gridsize=gridsize, cmap=CM.jet, bins=None)
PLT.axis([x.min(), x.max(), y.min(), y.max()])
cb = PLT.colorbar()
cb.set_label('mean value')
PLT.show()
</code></pre>
<p><img src="https://i.stack.imgur.com/9wKeX.png" alt="enter image description here"/></p>