2016-08-22 2 views
0

Учитывая следующий кадр данных и линейный график:Matplotlib> 1 Стиль линии, той же линии, разные цвета на линии

import matplotlib.pyplot as plt 
from cycler import cycler 
import numpy as np 
fig, ax=plt.subplots(1) 
d=pd.DataFrame({'a':[1,2,3,4], 
       'b':[2,3,4,5], 
       'c':[3,4,5,6]}) 
colors=['r','g','b'] 
ax.set_prop_cycle(cycler('color', [colors])) 
ax.plot(d[:3],'-ko',d[2:],'--ko') 
plt.show() 

enter image description here

Вы заметите, что я пытаюсь присвоить один цвет в но он не работает. Я также попытался использовать аргумент colors в ax.plot. Кажется, что это должно быть прямолинейно.

Заранее благодарим за помощь.

+0

' 'k'' в'' -ko» 'и' '--ko'' устанавливает цвет в черный цвет ... возможно, попробуйте удалить это? – tom

+0

Это имеет смысл, но если я это сделаю, я получаю ValueError: to_rgba: Invalid rgba arg "['r', 'g', 'b']" не удалось преобразовать строку в float: 'r' –

ответ

1

В коде есть две проблемы.

  1. 'k' в '-ko' и '--ko' устанавливает черный цвет, так что нам нужно удалить, что

  2. colors уже список, но вы поставили его в квадратные скобки снова в вызове set_prop_cycle , и, таким образом, превратили его в вложенный список: [['r','g','b']]. Снять квадратные скобки там, и все работает отлично: ax.set_prop_cycle(cycler('color', colors))

Таким образом, ваш код будет выглядеть следующим образом:

import matplotlib.pyplot as plt 
import pandas as pd 
from cycler import cycler 
import numpy as np 
fig, ax=plt.subplots(1) 
d=pd.DataFrame({'a':[1,2,3,4], 
       'b':[2,3,4,5], 
       'c':[3,4,5,6]}) 
colors=['r','g','b'] 
ax.set_prop_cycle(cycler('color', colors)) 
ax.plot(d[:3],'-o',d[2:],'--o') 
plt.show() 

enter image description here

+0

Perfect. Благодаря! –

Смежные вопросы