Python 如何将非线性cmap集中在RdYlGn周围?

Python 如何将非线性cmap集中在RdYlGn周围?,python,matplotlib,colors,Python,Matplotlib,Colors,我有一个从-0.5到0.7的数字列表。我希望从-0.5到0的数字能够覆盖cmap的RdYlGn中最深的红色(在-0.5处)到RdYlGn的相同cmap 0(黄色),并覆盖cmap为0.7处最深的绿色 换句话说,我希望RdYlGn的红色范围不是-4到0,而是-0.5到0。我希望绿色的RdYlGn的范围不是从4到0而是从0.7到0。到目前为止,与其他堆栈溢出不同的规范和函数重做cdict对我来说还不起作用 如果可能的话,我希望在不进行规范化的情况下执行此操作。如果不查看代码,很难说原始代码有什么问题

我有一个从-0.5到0.7的数字列表。我希望从-0.5到0的数字能够覆盖cmap的RdYlGn中最深的红色(在-0.5处)到RdYlGn的相同cmap 0(黄色),并覆盖cmap为0.7处最深的绿色

换句话说,我希望RdYlGn的红色范围不是-4到0,而是-0.5到0。我希望绿色的RdYlGn的范围不是从4到0而是从0.7到0。到目前为止,与其他堆栈溢出不同的规范和函数重做cdict对我来说还不起作用


如果可能的话,我希望在不进行规范化的情况下执行此操作。

如果不查看代码,很难说原始代码有什么问题。此外,很难理解解释中的数字
4
-4
在做什么

下面是一个示例,其中
边界范数从
-0.5
0.7
,其中心位于
0

导入matplotlib.pyplot作为plt
将matplotlib.colors导入为MCOLOR
将numpy作为np导入
ymin=-0.5
ymax=0.7
x=np.随机均匀(0,1,1000)
y=np.随机均匀(ymin,ymax,1000)
图,ax1=plt.子批次(图尺寸=(12,5))
norm=mcolors.diversingnorm(vcenter=0,vmin=ymin,vmax=ymax)
scat=ax1.散布(x,y,s=4,c=y,cmap=“RdYlGn”,norm=norm)
打印颜色条(scat,ax=ax1)
plt.show()

为了使差异更加极端,举一个极限值为
-0.2,0,0.7的例子:


这个答案有用吗?