Python 根据matplotlib中的数据设置线宽

Python 根据matplotlib中的数据设置线宽,python,matplotlib,Python,Matplotlib,我想在matplotlib中构建一个hexbin图,其中每个六边形的线条宽度是该六边形中观察值数量的函数。我认为这将有助于为hexbin图添加额外的推理级别 到目前为止,我有以下代码: import numpy as np import matplotlib.pyplot as plt x = np.random.uniform(0,1,1000) y = np.random.uniform(0,1,1000) z = np.random.uniform(0,1,1000) fig = pl

我想在matplotlib中构建一个hexbin图,其中每个六边形的线条宽度是该六边形中观察值数量的函数。我认为这将有助于为hexbin图添加额外的推理级别

到目前为止,我有以下代码:

import numpy as np
import matplotlib.pyplot as plt

x = np.random.uniform(0,1,1000)
y = np.random.uniform(0,1,1000)
z = np.random.uniform(0,1,1000)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.hexbin(x , y, C = z, gridsize=50, edgecolors='white')
这将创建一个六边形图,其中六边形的颜色是六边形中x、y对的平均z值的函数

有没有办法将六边形的线宽设置为每英寸中观察次数的函数


最终,我希望使用更粗的线条来填充更少的六角体。这将导致更小的可见六边形。

只需将线宽作为与
x,y
长度相同的数组

import numpy as np
import matplotlib.pyplot as plt

x = np.random.uniform(0,1,10)
y = np.random.uniform(0,1,10)
z = np.random.uniform(0,1,10)
LineWidths = np.random.uniform(1, 6, 10)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.hexbin(x , y, C = z, gridsize=50, edgecolors='black', 
          linewidths=LineWidths)

我把它们做成黑色来说明效果。您需要定义线宽,以适合您心目中的应用程序


我将提到,使用散点图时,控制标记的大小要容易得多。因此,除非您对
hexplot
有其他用途(我承认我不知道它们的重要性),否则这会容易得多

只需将线宽设置为与
x,y
长度相同的数组即可

import numpy as np
import matplotlib.pyplot as plt

x = np.random.uniform(0,1,10)
y = np.random.uniform(0,1,10)
z = np.random.uniform(0,1,10)
LineWidths = np.random.uniform(1, 6, 10)

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.hexbin(x , y, C = z, gridsize=50, edgecolors='black', 
          linewidths=LineWidths)

我把它们做成黑色来说明效果。您需要定义线宽,以适合您心目中的应用程序


我将提到,使用散点图时,控制标记的大小要容易得多。因此,除非您对
hexplot
有其他用途(我承认我不知道它们的重要性),否则这会容易得多

这是有道理的,但不能完全回答我的问题。
hexbin
图将观察结果分组,形成一种聚合散点图。图形的画布被等分为六角。对该十六进制范围内的所有观测值进行聚合,并调整十六进制的颜色以反映特定变量上所有观测值的平均值。当没有给出特定变量时,颜色用于表示每个十六进制中的观察数。我正在尝试创建一个包含观察数(线宽)和第三个变量(颜色)信息的图表。这很有意义,但不能完全回答我的问题。
hexbin
图将观察结果分组,形成一种聚合散点图。图形的画布被等分为六角。对该十六进制范围内的所有观测值进行聚合,并调整十六进制的颜色以反映特定变量上所有观测值的平均值。当没有给出特定变量时,颜色用于表示每个十六进制中的观察数。我正在尝试创建一个包含观察次数(线宽)和第三个变量(颜色)信息的图表stackoverflow.com/a/35501485/4013571显示了一个适用于一个子批次的方法-对于>1stackoverflow.com/a/35501485/4013571显示了一个适用于一个子批次的方法-对于>1,它变得异常复杂