改变python matplotlib python图的颜色方案

时间:2013-11-16 16:58:30

标签: python colors matplotlib plot color-mapping

我想为我的python图设置一个颜色方案,这样它们就不会像下面显示的顶部图中的A和H那样重复相同的颜色。 (对不起,如果很难看到)。 enter image description here

我正在使用的代码很简单,

  

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功能?谢谢你的帮助!

2 个答案:

答案 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='-')

enter image description here

要使用最少的更改在现有代码中执行此操作,只需添加(并且不要忘记将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()

CMYK example

另一个选项是更改全局默认颜色映射。您可以通过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也很有用,例如用于注册自己的颜色贴图。