在matplotlib中如何填充正方形坐标轴的hexbin空白区域?

5 投票
2 回答
3920 浏览
提问于 2025-04-17 08:08

我正在尝试使用 hexbin 来绘制一些数据,并希望坐标轴是正方形的。我使用了以下代码:

import matplotlib.cm as cm                              
plt.figure()  
num_pts = 1000             
x = rand(num_pts) * 100                                                                          
y = rand(num_pts) * 250              
x_min = 0               
x_max = 150                       
x_step = 25

y_min = 50           
y_max = 300                          
y_step = 50       

s = plt.subplot(1,1,1)                                                                                                                              
plt.hexbin(x,y,cmap=cm.jet,gridsize=20)             
plt.xticks(range(x_min,x_max+x_step,x_step))                                                                                                                           
plt.yticks(range(y_min,y_max+y_step,y_step))                                                                                                                           
# square axes                
s.axes.set_aspect(1/s.axes.get_data_ratio())   

我想让坐标轴是正方形的,并且想自己设置 x 轴和 y 轴的刻度,以及 x 和 y 的范围。对于某些坐标轴的值,可能没有数据,所以 hexbin 计算出的数量应该是零——我希望 hexbin 能把这些地方显示为空白,而不是用 cm.jet 颜色图显示成“白色”/空白。

现在我得到的结果是这样的。

我该如何让它用颜色图填充这些空白区域呢?谢谢。

enter image description here

2 个回答

5

你也可以简单地创建一个坐标轴,然后把它的背景颜色设置为最小的颜色映射值(或者你想要的任何颜色):

fig = plt.figure()
ax = fig.add_subplot(111,axisbg=cm.jet(0))
10

我认为答案是使用 extent= 这个关键字参数,像这样:

plt.hexbin(x, y, cmap=cm.jet, gridsize = 20, extent=[x_min, x_max, y_min, y_max]) 

撰写回答