2017-01-06 6 views
3

Я рисую несколько графиков с matplotlib для публикации, и мне нужно, чтобы все были одинакового стиля. Некоторые графики имеют более 6 категорий, и я заметил, что по умолчанию он не отображает более 6 разных цветов. 7 или более, и я начинаю повторять цвета.изменить количество цветов в таблицах стилей matplotlib

например.

import pandas as pd 
import matplotlib.pyplot as plt 
import numpy as np 
%matplotlib inline 
plt.style.use('seaborn-muted') 

df2= pd.DataFrame(np.random.rand(10,8)) 
df2.plot(kind='bar',stacked=True) 
plt.legend(fontsize=13,loc=1) 
plt.show() 

Существует, вероятно, познавательный причина, чтобы не включать более 6 различных цветов, но если мне нужно, как я могу это сделать? Я пробовал разные таблицы стилей (seaborn, ggplot, classic), и у всех, похоже, есть одно и то же «ограничение».

Нужно ли менять цветную таблицу/таблицу стилей? В идеале я бы хотел использовать качественную цветокоррекцию (в категориях, которые я планирую) нет, и использовать уже существующую ... Я не очень хорошо выбираю цвета.

спасибо!

ответ

2
import pandas as pd 
import matplotlib.pyplot as plt 
import numpy as np 
%matplotlib inline 

colors = plt.cm.jet(np.linspace(0, 1, 10)) 

df2= pd.DataFrame(np.random.rand(10,8)) 
df2.plot(kind='bar',color=colors, stacked=True) 
plt.legend(fontsize=13,loc=1) 

это в основном скопированы из Plotting with more colors in matplotlib. проверьте документ colormap и его номер example page.

+0

Он работает! потому что я хотел получить качественную цветочную карту (реактивный самолет - нет, и это серьезно обескуражено). Я изменил его на «парный» один из качественных цветовых карт, доступных в matplotlib http://matplotlib.org/users/colormaps.html – Nabla

3

По умолчанию matplotlib будет проходить цикл из шести цветов. Если вы хотите изменить цвета по умолчанию (или количество цветов), вы можете использовать cycler для прокрутки нужных цветов вместо значений по умолчанию.

from cycler import cycler 

% Change the default cycle colors to be red, green, blue, and yellow 
plt.rc('axes', prop_cycle=(cycler('color', ['r', 'g', 'b', 'y'])) 

demo here

Лучший способ просто вручную указать сюжетные цвета при создании plot так, что не каждый участок вы делаете должен использовать те же цвета.

plt.plot([1,2,3], 'r') 
plt.plot([4,5,6], 'g') 
plt.plot([7,8,9], 'b') 
plt.plot([10,11,12], 'y') 

Или вы можете изменить цвет после создания

h = plt.plot([1,2,3]) 
h.set_color('r') 
+2

Обратите внимание, что список цветов, передаваемых 'cycler()', может быть произвольной длины и в любом формате, поддерживаемом ['matplotlib.colors'] (http://matplotlib.org/api/colors_api. HTML # модуль-matplotlib.colors). Например, у меня это в моем «matplotlibrc':' cycler («color», «348ABD, 7A68A6, A60628, 467821, CF4457, 188487, E24A33») '- синий, фиолетовый, красный, зеленый, розовый, бирюзовый, оранжевый , Шестигранные цвета могут включать или не включать хэш '#' и могут быть разделены запятыми (например, мои) или список. Вы также можете использовать [X11 colors] (https://en.wikipedia.org/wiki/X11_color_names). – MattDMo

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