Как выбрать новый цвет для каждой построенной линии внутри фигуры в matplotlib?
Я бы не хотел указывать цвет для каждой построенной линии:
for i in range(20):
ax1.plot(x, y)
Если вы посмотрите на изображение для этого, matplotlib пытается выбрать цвета для каждой строки, которые отличаются, но в конечном итоге он повторно использует цвета. Я просто хочу, чтобы остановить его от повторения уже используемых цветов и/или кормить его список цветов для использования.
5 ответов:
Я использую 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:
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