相关疑难解决方法(0)

具有公平发散颜色图的不对称颜色条

我正在尝试在散点图中绘制不对称的颜色范围。我希望颜色能够使用发散的颜色图来公平地表示强度。我无法更改颜色条来表示这一点。

例如,我想在散点图中绘制范围为 [-2, 10] 的 xy 数据,以便颜色条仅显示范围 -2 到 10,中性色为 0,但“强度”为 -2 和 2是相同的。

我尝试过使用ColorMap Normalization截断 color map,但似乎我需要将两者结合起来,但我无法弄清楚。

MCV 示例

x = np.arange( 0, 1, 1e-1 )
xlen = x.shape[ 0 ]
z = np.random.random( xlen**2 )*12 - 2


splt = plt.scatter( 
    np.repeat( x, xlen ), 
    np.tile( x, xlen ), 
    c = z, cmap = 'seismic',
    s = 400
)

plt.colorbar( splt )
Run Code Online (Sandbox Code Playgroud)

通过使用 MidpointNormalize

class MidpointNormalize(colors.Normalize):
    def __init__(self, vmin=None, vmax=None, midpoint=None, clip=False):
        self.midpoint …
Run Code Online (Sandbox Code Playgroud)

python matplotlib colorbar

4
推荐指数
1
解决办法
2650
查看次数

在matplotlib colormap中选择起始颜色

我有如下图所示的图.目前,该图的colorscheme使用了colormap的整个范围(mpl.cm.Paired).我想做的,并且一直无法弄清楚,是如何限制matplotlib仅使用色图的一个子集.在这种情况下,我试图让起始颜色变成深蓝色.这是我的代码的绘图部分:

Figure = plt.figure(figsize=(22,10))
Map    = Basemap(projection='robin', lon_0=0, resolution='l')
x, y   = Map(LONS, LATS)
levels = np.arange(0, 4100, 100)
fcp    = Map.contourf(x, y, data, levels, interpolation="bicubic", cmap=mpl.cm.Paired)

cb = Map.colorbar(fcp, "bottom", size="5%", pad='5%', extendrect=False)
cb.ax.tick_params(labelsize=18)
cb.solids.set_edgecolor("face")
cb.set_label("metres",fontsize=18)
cb.ax.set_aspect(0.047)

Map.drawcoastlines(linewidth=1)
Map.drawmapboundary(linewidth=1)
Map.drawmeridians([-150,-100,-50,0,50,100, 150],labels=[1,1,1,0],fontsize=18)
Map.drawparallels([-60,-30,0,30,60],labels=[1,1,1,1],fontsize=18)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python matplotlib matplotlib-basemap

1
推荐指数
1
解决办法
2431
查看次数

标签 统计

matplotlib ×2

python ×2

colorbar ×1

matplotlib-basemap ×1