【发布时间】:2013-06-27 22:11:45
【问题描述】:
在 matplotlib 中制作 hexbin 图时,我发现交替排列的六边形图块大小不同,有时明显不同。这个演示代码展示了效果:
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()
plt.subplot(111)
plt.hexbin(x, y, C=z, gridsize=30, 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()
在this image 中,网格大小为 30,您可以看到交替的行在垂直方向上被挤压了一点:
效果不是很显着,但是在this magnified view的同一个hexbin plot但gridsize为80的情况下,小行的大小几乎是大行的一半。 (生成的样本数据也开始与网格不对齐,但这是一个不重要的工件。)
hexbin 文档内容如下:
网格大小:[ 100 |整数]
x 方向的六边形数量,默认为 100。选择 y 方向的相应六边形数量,使六边形近似规则。或者,gridsize 可以是一个包含两个元素的元组,分别指定 x 方向和 y 方向的六边形数量。
它只保证六边形是“近似”规则的,但似乎,尤其是在像上面的 80 网格大小的图像这样的情况下,通过减少如此小的行数可以使六边形更接近规则可以放大并变得更规则。或者,正常大小的行可以垂直缩小,而小的行会垂直放大,保持所有行的高度相同,即使图块的形状不规则。
这种异常的原因是什么,可以避免吗?
【问题讨论】:
标签: matplotlib size tile