matplotlib Contourf生产颜色色板

2j4z5cfb  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(94)

我想在下面所示的数据之间插入值(梯度):


的数据
然而,我得到的结果是这样的:


fig, (ax1) = plt.subplots(figsize=(12,6))
colors = plt.cm.get_cmap('autumn_r')
ax1.set_facecolor("gray")
levels,steps = np.linspace(min(monet_mag),max(monet_mag),graphlevels,retstep=True)
ticks = np.linspace(max(monet_mag),min(monet_mag),10) 
xgrid = np.linspace(min(monet_lpa), max(monet_lpa),145)
ygrid = np.linspace(min(monet_decpa), max(monet_decpa),145)
xgrid, ygrid = np.meshgrid(xgrid, ygrid,indexing='xy')
interpolated_grid = griddata((monet_lpa,monet_decpa),monet_mag, (xgrid, ygrid), method='linear')
cax = ax1.contourf(monet_lpa, monet_decpa, interpolated_grid, levels=levels, cmap=colors,extend="both")

字符串
请注意,在griddata的gridsize的位置,我已经明确地放了“145”。这是所有列表的维度。如果我改变gridsize(到300),我得到一个错误:

TypeError(f"Length of x ({nx}) must match number of "
TypeError: Length of x (145) must match number of columns in z (300).


但是改变网格大小与“z”轴(monet_mag)没有任何关系。
请让我知道如果有什么明显的我做错了。

esyap4oy

esyap4oy1#

interpolated_grid是z值的[145,145]数组。使用contourf绘制这些z值时,需要传递这些插值的x和y坐标,而实际上是传递输入数据的x和y坐标。您希望传递网格的x和y坐标(即:xgridygrid)。
这也会导致更改网格大小时出现错误。
所以呢

cax = ax1.contourf(xgrid, ygrid, interpolated_grid, levels=levels, cmap=colors,extend="both"

字符串
应该工作,并允许您设置网格大小为任何您想要的。
我相信contourf也可以处理插值-所以

cax = ax1.contourf(monet_lpa, monet_decpa, monet_mag, levels=levels, cmap=colors,extend="both")


也会给你一个合理的结果。

相关问题