pandas.DataFrame.plot.hexbin#

DataFrame.plot.hexbin(x, y, C=None, reduce_C_function=None, gridsize=None, **kwargs)[源代码]#

生成一个六边形分箱图。

生成 xy 的六边形分箱图。如果 CNone`(默认值),这是在 ``(x[i], y[i])` 处观测到的发生次数的直方图。

如果指定了 C,则在给定的坐标 (x[i], y[i]) 处指定值。这些值会为每个六边形箱累积,然后根据 reduce_C_function 进行缩减,默认使用 NumPy 的均值函数 (numpy.mean())。(如果指定了 C,它也必须是一个与 xy 长度相同的 1-D 序列,或者是一个列标签。)

参数:
xint 或 str

x 点的列标签或位置。

yint 或 str

y 点的列标签或位置。

Cint 或 str, 可选

(x, y) 点的列标签或位置的值。

reduce_C_function : 可调用对象, 默认 np.mean可调用的,默认

一个参数的函数,将一个箱中的所有值减少到一个数字(例如 np.mean, np.max, np.sum, np.std)。

gridsizeint 或 (int, int) 的元组,默认值为 100

x方向上的六边形数量。y方向上对应的六边形数量选择的方式是使得六边形近似为正六边形。或者,gridsize可以是一个包含两个元素的元组,指定x方向和y方向上的六边形数量。

**kwargs

其他关键字参数在 DataFrame.plot() 中记录。

返回:
matplotlib.Axes

绘制六边形分箱图的 matplotlib Axes

参见

DataFrame.plot

绘制 DataFrame 的图表。

matplotlib.pyplot.hexbin

使用 matplotlib 的六边形分箱图,这是在幕后使用的 matplotlib 函数。

例子

以下示例是使用正态分布中的随机数据生成的。

>>> n = 10000
>>> df = pd.DataFrame({"x": np.random.randn(n), "y": np.random.randn(n)})
>>> ax = df.plot.hexbin(x="x", y="y", gridsize=20)
../../_images/pandas-DataFrame-plot-hexbin-1.png

下一个示例使用 Cnp.sum 作为 reduce_C_function。注意 ‘observations’ 的值范围从 1 到 5,但结果图显示的值高达 25 以上。这是由于 reduce_C_function 的原因。

>>> n = 500
>>> df = pd.DataFrame(
...     {
...         "coord_x": np.random.uniform(-3, 3, size=n),
...         "coord_y": np.random.uniform(30, 50, size=n),
...         "observations": np.random.randint(1, 5, size=n),
...     }
... )
>>> ax = df.plot.hexbin(
...     x="coord_x",
...     y="coord_y",
...     C="observations",
...     reduce_C_function=np.sum,
...     gridsize=10,
...     cmap="viridis",
... )
../../_images/pandas-DataFrame-plot-hexbin-2.png