2013-11-16 3 views
3

Я хочу установить цветовую схему для своих графиков python, чтобы они не повторяли тот же цвет, что и для A и H в верхнем графике, показанном ниже. (извините, если его трудно увидеть). enter image description hereИзменение цветовой схемы python matplotlib python plot

код я использую просто,

ax1.plot(sections,A,label='A',linewidth=2) ax1.plot(sections,B,label='B',linewidth=2) ax1.plot(sections,C,label='C',linewidth=2) ax1.plot(sections,D,label='D',linewidth=2) ax1.plot(sections,E,label='E',linewidth=2) ax1.plot(sections,F,label='F',linewidth=2) ax1.plot(sections,G,label='G',linewidth=2) ax1.plot(sections,H,label='H',linewidth=2)

Какой самый лучший способ установить цветовую схему? Использует функцию colourmap? Спасибо за любую помощь!

ответ

2

Вы можете изменить цветовую карту для конкретных осей с помощью метода set_color_cycle().

Это упрощенная версия color cycle demo в matplotlib документы:

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 также полезен, например, для регистрации ваших собственных цветовых карт.

3

Вы можете использовать некоторые цветовые карты, чтобы цвет ваших линий, пример (здесь я использую «реактивную» палитры):

>>> 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) 
+0

Спасибо за помощь, но я изо всех сил, чтобы понять, как использовать это в сценарий, который я написал. Есть ли способ, которым я мог бы просто что-то сказать по строкам ax1.cm.ScalarMappable (cmap = 'jet') – user2739143

+0

Конечно, см. Править. –

+0

Я получаю сообщение об ошибке «NameError: имя« matplotlib »не определен» в вашем коде. Я ранее использовал matplotlib, используя импорт «matplotlib.pyplot as plt» и «from matplotlib import *», что-то не так с этим? – user2739143