Skip to main content
 首页 » 编程设计

python之将线宽设置为 matplotlib 中数据的函数

2025年05月04日9mate10pro

我想在 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') 

这会创建一个 hexbin 图,其中 bin 的颜色是 bin 中 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) 

我将它们设为黑色以说明效果。您将需要定义线宽以适合您想要的应用。

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