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()
我想在我的情节中尝试不同的色彩映射,但命令plt.set_cmap('hot')
不起作用,即颜色与标准调色板中的颜色相同(http://i.stack.imgur.com/FjXoO.png)
我在Debian Linux下使用WXAgg后端,在Enthought的Canopy中使用matplotlib。我尝试了Qt4Agg后端,结果是一样的。如何正确改变颜色?
答案 0 :(得分:6)
plt.set_cmap
会设置一个colormap
,例如,在图片中使用。由于您只是绘制线条,因此不会影响您的情节。
使用plt.plot
绘图时,您可以提供color
关键字参数,该参数将选择线条的颜色,如下所示。
# ...
plt.plot(x,y, color='black')
plt.plot(x,y1, color='pink')
plt.plot(x,y2, color='green')
plt.show()
或者,您可以使用ax.set_color_cycle()
设置新的颜色循环,这样您就可以选择在添加新绘图时颜色的变化,并有效地创建与之前相同的图形。有关演示,请参阅here。
# ...
plt.gca().set_color_cycle(['black', 'pink', 'green'])
plt.plot(x,y)
plt.plot(x,y1)
plt.plot(x,y2)
plt.show()
最后,如果您想从现有的色彩映射中获取颜色列表,那么您可以使用以下代码将它们线性间隔开。色图本身由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()