我想为我的python图设置一个颜色方案,这样它们就不会像下面显示的顶部图中的A和H那样重复相同的颜色。 (对不起,如果很难看到)。
我正在使用的代码很简单,
ax1.plot(部分A,标记= 'A',线宽= 2) ax1.plot(节,B,标记= 'B',线宽= 2) ax1.plot(部分,C,标记= 'C',线宽= 2) ax1.plot(区段,d,标记= 'd',线宽= 2) ax1.plot(区段,E,标记= 'E',线宽= 2) ax1.plot(区段,F,标记= 'F',线宽= 2) ax1.plot(区段,G,标记= 'G',线宽= 2) ax1.plot(切片,H,标签= 'H',线宽= 2)
设置配色方案的最佳方法是什么?使用colourmap功能?谢谢你的帮助!
答案 0 :(得分:3)
您可以使用一些色彩图为线条着色,例如(这里我使用'jet'色彩图):
>>> from matplotlib import cm
>>> for i, val in enumerate(cm.jet(linspace(0,1,10))): #different lines
plt.plot(arange(10), arange(10)+i, color=val, linestyle='-')
要使用最少的更改在现有代码中执行此操作,只需添加(并且不要忘记将10
更改为您拥有的图表数量。):
for L, C in zip([item for item in ax.get_children() if isinstance(item, matplotlib.lines.Line2D)], cm.jet(linspace(0,1,10))):
L.set_color(C)
答案 1 :(得分:2)
您可以使用set_color_cycle()
方法更改特定轴的颜色映射。
这是matplotlib
文档中color cycle demo的简化版:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 2 * np.pi)
offsets = np.linspace(0, 2*np.pi, 4, endpoint=False)
yy = np.transpose([np.sin(x + phi) for phi in offsets])
plt.rc('lines', linewidth=4)
ax = plt.gca()
# Set color cycle for this axes
ax.set_color_cycle(['c', 'm', 'y', 'k'])
ax.plot(yy)
plt.show()
另一个选项是更改全局默认颜色映射。您可以通过creating a matplotlibrc
file和设置axes.color_cyle
来执行此操作,也可以在运行时通过运行配置来执行此操作:
import matplotlib
matplotlib.rcParams['axes.color_cycle'] = ['r', 'g', 'b']
您还可以使用HTML十六进制表示法来指定颜色:
ax.set_color_cycle(['#FF0000', '#00FF00', '#0000FF'])
有关如何指定颜色的详细信息,请参阅documentation of the `color``module。
matplotlib.cm
module也很有用,例如用于注册自己的颜色贴图。