如何使用matplotlib的set_cmap()?

alk*_*mid 5 python matplotlib

import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(-np.pi,np.pi,101)
y=np.sin(x)+np.sin(3*x)/3
y1=np.sin(x)+np.sin(2*x)/3
y2=np.sin(x)+np.sin(3*x)/2

plt.set_cmap('hot')

plt.plot(x,y)
plt.plot(x,y1)
plt.plot(x,y2)
plt.show()
Run Code Online (Sandbox Code Playgroud)

我想在我的绘图中尝试不同plt.set_cmap('hot')的色彩映射,但命令不起作用,即颜色与标准调色板中的颜色相同(http://i.stack.imgur.com/FjXoO.png)

我在Debian Linux下使用WXAgg后端,在Enthought的Canopy中使用matplotlib.我尝试了Qt4Agg后端,结果是一样的.如何正确改变颜色?

Ffi*_*ydd 7

plt.set_cmap将设置a colormap用于例如图像绘图中.由于您只是绘制线条,因此不会影响您的情节.

使用时绘图plt.plot可以提供一个color关键字参数,用于选择线条的颜色,如下所示.

# ... 
plt.plot(x,y, color='black')
plt.plot(x,y1, color='pink')
plt.plot(x,y2, color='green')
plt.show()
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用选项设置新的颜色循环ax.set_color_cycle(),这样您可以选择在添加新绘图时颜色的变化,并有效地创建与之前相同的图形.请参阅此处获取演示.

# ...    
plt.gca().set_color_cycle(['black', 'pink', 'green'])

plt.plot(x,y)
plt.plot(x,y1)
plt.plot(x,y2)
plt.show()
Run Code Online (Sandbox Code Playgroud)

最后,如果您想从现有的色彩映射中获取颜色列表,那么您可以使用以下代码将它们线性间隔开.色图本身由matplotlib.pyplot.cm.<your_colormap_here>.给出.通过在0和1之间传递10个等间距的数字作为参数,您可以得到10个等间距的颜色.

import numpy as np
import matplotlib.pyplot as plt

x=np.linspace(-np.pi,np.pi,101)
y=np.sin(x)+np.sin(3*x)/3
y1=np.sin(x)+np.sin(2*x)/3
y2=np.sin(x)+np.sin(3*x)/2

colors = plt.cm.hot(np.linspace(0,1,10))
plt.gca().set_color_cycle(colors)

plt.plot(x,y)
plt.plot(x,y1)
plt.plot(x,y2)
plt.show()
Run Code Online (Sandbox Code Playgroud)

示例图

  • `set_color_cycle`现已弃用.您可以使用`from cycler import cycler`和`plt.gca().set_prop_cycle(cycler('color',colors))`. (4认同)