python - matplotlib.contourf 级别是否取决于颜色图中的颜色数量?

标签 python matplotlib colorbrewer

我正在使用 contourf 绘制 map ,我通常会使用级别 = 50 的默认(彩虹)配色方案。

#Various imports
#LOTS OF OTHER CODE BEFORE
plot = plt.contourf(to_plot, 50)
plt.show()
#LOTS OF OTHER CODE AFTER

输出如下。我做了各种其他事情来获得海岸线等。如果有人感兴趣的话,它是使用 iris 和 cartopy 完成的。

This is the result

现在我决定不想使用彩虹方案,所以我使用了一些 Cyntia Brewer 颜色:

brewer_cmap = mpl.cm.get_cmap('brewer_Reds_09')
plot = iplt.contourf(to_plot, 50, cmap=brewer_cmap) # expect 50 levels

但是输出是: This is the result

可以看到Here这个调色板只有 9 种颜色。所以我的问题是,contourf 级别是否受颜色图中可用颜色数量的限制?我非常喜欢这张 map ,我想知道是否可以生成一张类似它但具有更多红色级别的新 map ?

我对能够捕获数据的可变性很感兴趣,因此更多的等高线水平似乎是个好主意,但我热衷于放弃彩虹方案,而只使用基于单一颜色的方案。

干杯!

最佳答案

是的,它是一个离散的颜色图,如果你想要一个连续的颜色图,你需要制作一个自定义的颜色图。

#the colormap data can be found here: https://github.com/SciTools/iris/blob/master/lib/iris/etc/palette/sequential/Reds_09.txt

In [22]:

%%file temp.txt
1.000000 0.960784 0.941176
0.996078 0.878431 0.823529
0.988235 0.733333 0.631373
0.988235 0.572549 0.447059
0.984314 0.415686 0.290196
0.937255 0.231373 0.172549
0.796078 0.094118 0.113725
0.647059 0.058824 0.082353
0.403922 0.000000 0.050980
Overwriting temp.txt
In [23]:

c_array = np.genfromtxt('temp.txt')
from matplotlib.colors import LinearSegmentedColormap
plt.register_cmap(name='Test', data={key: tuple(zip(np.linspace(0,1,c_array.shape[0]), c_array[:,i], c_array[:,i])) 
                                         for key, i in zip(['red','green','blue'], (0,1,2))})
In [24]:

plt.contourf(X, Y, Z, 50, cmap=plt.get_cmap('Test'))
plt.colorbar()
Out[24]:
<matplotlib.colorbar.Colorbar instance at 0x108948320>

enter image description here

关于python - matplotlib.contourf 级别是否取决于颜色图中的颜色数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25166804/

相关文章:

python - pip install matplotlib 在使用 Homebrew 软件的特立独行者上失败

r - ggplot2:使用 scale_colour_brewer() 并手动指定图例名称/条目标签

r - plotly() 中的色阶

python - 使用最近的行填充数据框中的缺失值

python - 如何在 macOS 上创建和存储 matplotlib 样式文件?

python - numpy,连接或初始化之间的循环选择

python - matplotlib Python 的安装问题

python - 读取 Pandas 数据框前几行的方法

python - 寻找函数的最大值