Как избежать повторения цвета линий в matplotlib.pyplot? - PullRequest
6 голосов
/ 17 мая 2011

Я сравниваю некоторые алгоритмические результаты, используя matplotlib.pyplot, однако очень трудно понять, что происходит, поскольку несколько линий имеют одинаковый точный цвет. Есть ли способ избежать этого? Я не думаю, что у pyplot есть только семь цветов, не так ли?

Ответы [ 5 ]

8 голосов
/ 13 марта 2016

Лучше всего, если вы знаете, сколько графиков вы собираетесь построить, прежде чем определить цветовую карту:

import matplotlib.pyplot as plt
import numpy as np

fig1 = plt.figure()
ax1 = fig1.add_subplot(111)
number_of_plots=10
colormap = plt.cm.nipy_spectral #I suggest to use nipy_spectral, Set1,Paired
ax1.set_color_cycle([colormap(i) for i in np.linspace(0, 1,number_of_plots)])
for i in range(1,number_of_plots+1):
    ax1.plot(np.array([1,5])*i,label=i)

ax1.legend(loc=2)  

Используя nipy_spectral

enter image description here

Использование Set1 enter image description here

6 голосов
/ 17 мая 2011

Matplotlib имеет более семи цветов.Вы можете указать свой цвет разными способами (см. http://matplotlib.sourceforge.net/api/colors_api.html).

Например, вы можете указать цвет, используя шестнадцатеричную строку html:

pyplot.plot(x, y, color='#112233')
2 голосов
/ 21 октября 2018

Для Python 3 , из приведенных выше решений вы можете использовать:

colormap = plt.cm.nipy_spectral
colors = [colormap(i) for i in np.linspace(0, 1,number_of_plots)]
ax.set_prop_cycle('color', colors)

или:

import seaborn as sns

    colors = sns.color_palette("hls", number_of_plots)
    ax.set_prop_cycle('color', colors)
2 голосов
/ 24 августа 2016

Я бы также предложил использовать Seaborn .С этой библиотекой очень легко генерировать последовательные или качественные цветовые палитры с количеством нужных вам цветов.Существует также инструмент для визуализации палитр.Например:

import seaborn as sns

colors = sns.color_palette("hls", 4)
sns.palplot(colors)
plt.savefig("pal1.png")
colors = sns.color_palette("hls", 8)
sns.palplot(colors)
plt.savefig("pal2.png")
colors = sns.color_palette("Set2", 8)
sns.palplot(colors)
plt.savefig("pal3.png")

Это следующие палитры:

enter image description here

enter image description here

enter image description here

0 голосов
/ 30 апреля 2019

Мое решение с Seaborn было действительно легким.Если вы строите с помощью Pandas , то вот пример простого построения кумнусов.

import pandas as pd
import seaborn as sns

df = pd.read_csv('file.csv')

ax = df.plot(x, y)
sns.set_palette(sns.color_palette('hls', 12))

Реально прост в реализации, и есть множество различных цветовых схем, предоставляемых Seaborn.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...