Как выбрать новый цвет для каждой построенной линии внутри фигуры в matplotlib?



Я бы не хотел указывать цвет для каждой построенной линии:



for i in range(20):
ax1.plot(x, y)


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

680   5  

5 ответов:

в 1.0 + версии matplotlib вы можете использовать axes.color_cycle (см. пример), а в более старых версиях,Axes.set_default_color_cycle (см. пример).

Я использую 3-й один из этих 3-х обычно, также я проверял версию 1 и 2.

from matplotlib.pyplot import cm
import numpy as np

#variable n should be number of curves to plot (I skipped this earlier thinking that it is obvious when looking at picture - sorry my bad mistake xD): n=len(array_of_curves_to_plot)
#version 1:

color=cm.rainbow(np.linspace(0,1,n))
for i,c in zip(range(n),color):
   ax1.plot(x, y,c=c)

#or version 2: - faster and better:

color=iter(cm.rainbow(np.linspace(0,1,n)))
c=next(color)
plt.plot(x,y,c=c)

#or version 3:

color=iter(cm.rainbow(np.linspace(0,1,n)))
for i in range(n):
   c=next(color)
   ax1.plot(x, y,c=c)

Пример 3: example plot with iter,next color

prop_cycle

color_cycle был осужден в 1.5 в пользу этого обобщения: http://matplotlib.org/users/whats_new.html#added-axes-prop-cycle-key-to-rcparams

# cycler is a separate package extracted matplotlib.
from cycler import cycler
import matplotlib.pyplot as plt

plt.rc('axes', prop_cycle=(cycler('color', ['r', 'g', 'b'])))
plt.plot([1, 2])
plt.plot([2, 3])
plt.plot([3, 4])
plt.plot([4, 5])
plt.plot([5, 6])
plt.show()

также показано в Примере (теперь плохо названном):http://matplotlib.org/1.5.1/examples/color/color_cycle_demo.html упоминается по адресу:https://stackoverflow.com/a/4971431/895245

проверен в matplotlib 1.5.1.

Я не знаю, можете ли вы автоматически изменить цвет, но вы можете использовать свой цикл для создания разных цветов:

for i in range(20):
   ax1.plot(x, y, color = (0, i / 20.0, 0, 1)

в этом случае цвета будут варьироваться от черного до 100% зеленого, но вы можете настроить его, если хотите.

посмотреть matplotlib plot () docs и искать color ключевое слово аргумент.

Если вы хотите кормить список цветов, просто убедитесь, что у вас есть список достаточно большой, а затем использовать индекс цикла выберите цвет

colors = ['r', 'b', ...., 'w']

for i in range(20):
   ax1.plot(x, y, color = colors[i])

вы также можете изменить цветовой цикл по умолчанию в вашем . Если вы не знаете, где находится этот файл, выполните следующие действия в python:

import matplotlib
matplotlib.matplotlib_fname()

Это покажет вам путь к вашему текущему файлу matplotlibrc. В этом файле вы найдете среди многих других настроек также один для axes.color.cycle. Просто поместите в нужной последовательности цветов, и вы найдете его в каждом сюжете вы делаете. Обратите внимание, что вы также можете использовать все допустимые имена цветов html в matplotlib.

Comments

    Ничего не найдено.