Python Matplotlib/Basemap 颜色循环

0 投票
1 回答
1330 浏览
提问于 2025-04-18 00:05

我刚开始学习Python和其他程序,现在想用循环来绘制21个预测成员的图,每个成员都有一个专属的编号,从1到21。当我绘制地图时,所有的成员都显示成蓝色。我查了一下关于颜色映射的资料,发现默认的颜色映射是没有索引的,也就是说,我不能像对待列表或数组那样用colormap[1]来调用它们。请问有没有什么带索引的颜色映射,或者有没有其他解决办法?简单来说,我想给每个预测成员循环使用不同的颜色,用简单的数字来表示。

1 个回答

2

你可以使用 ax.set_prop_cycle 来指定一个颜色列表,这样就可以在这些颜色中循环使用。

颜色映射是可以调用的,所以生成颜色的一个简单方法是将一系列在0到1之间的数字传给颜色映射,这样它就会返回一组RGBA颜色。

比如说,

In [93]: jet = plt.cm.jet

In [94]: jet([0,0.5,1])
Out[94]: 
array([[ 0.        ,  0.        ,  0.5       ,  1.        ],
       [ 0.49019608,  1.        ,  0.47754586,  1.        ],
       [ 0.5       ,  0.        ,  0.        ,  1.        ]])

import matplotlib.pylab as plt
import matplotlib.rcsetup as rcsetup
import numpy as np

jet = plt.cm.jet
fig, ax = plt.subplots()
N = 20
idx = np.linspace(0, 1, N)
ax.set_prop_cycle(rcsetup.cycler('color', jet(idx)))
x = np.linspace(0, 100, 200)
for i in range(1, N+1):
    ax.plot(x, np.sin(x)+i)
ax.set_ylim(0, N+1)
plt.show()

enter image description here

撰写回答