Я бы НЕ хотел указывать цвет для каждой построенной линии, и чтобы каждая линия имела отдельный цвет. Но если я побегу:
from matplotlib import pyplot as plt
for i in range(20):
plt.plot([0, 1], [i, i])
plt.show()
тогда я получаю такой результат:
Если вы посмотрите на изображение выше, вы увидите, что matplotlib пытается выбрать цвета для каждой строки, которые отличаются, но в конечном итоге он повторно использует цвета - верхние десять строк используют те же цвета, что и нижние десять. Я просто хочу, чтобы он не повторял уже использованные цвета И / ИЛИ подавал ему список используемых цветов.
matplotlib
Dlamotte
источник
источник
[colormap(i) for i in np.linspace(0, 0.9, num_plots)]
гдеcolormap
одна из цветовых карт,matplotlib.pyplot.cm
аnumplots
это число уникальных цветов, которые вы хотите. Однако помните, что это может привести к тому, что цвета будут трудно отличить друг от друга !!Обычно я использую второй из них:
Пример 2:
источник
prop_cycle
color_cycle
устарел в версии 1.5 в пользу этого обобщения: http://matplotlib.org/users/whats_new.html#added-axes-prop-cycle-key-to-rcparamsТакже показано в примере (теперь плохо названном): http://matplotlib.org/1.5.1/examples/color/color_cycle_demo.html, упомянутом по адресу: https://stackoverflow.com/a/4971431/895245
Проверено в matplotlib 1.5.1.
источник
Я не знаю, можете ли вы автоматически изменять цвет, но вы можете использовать свой цикл для генерации разных цветов:
В этом случае цвета будут варьироваться от черного до 100% зеленого, но вы можете настроить его, если хотите.
См. Документацию по matplotlib plot () и найдите
color
аргумент ключевого слова.Если вы хотите передать список цветов, просто убедитесь, что у вас есть достаточно большой список, а затем используйте индекс цикла, чтобы выбрать цвет.
источник
Вы можете использовать предопределенную «качественную цветовую карту» следующим образом:
Проверено на matplotlib 3.0.3. См. Https://github.com/matplotlib/matplotlib/issues/10840 для обсуждения того, почему вы не можете позвонить
axes.set_prop_cycle(color=cmap)
.Список предопределенных качественных цветовых карт доступен по адресу https://matplotlib.org/gallery/color/colormap_reference.html :
источник
Вы также можете изменить цветовой цикл по умолчанию в вашем
matplotlibrc
файле. Если вы не знаете, где находится этот файл, сделайте в python следующее:Это покажет вам путь к вашему текущему файлу matplotlibrc. В этом файле вы найдете среди множества других настроек и настройки
axes.color.cycle
. Просто введите желаемую последовательность цветов, и вы найдете ее на каждом создаваемом вами графике. Обратите внимание, что вы также можете использовать все допустимые имена цветов html в matplotlib.источник
Как отмечает Ciro , вы можете использовать
prop_cycle
для установки списка цветов для цикла matplotlib. Но сколько цветов? Что, если вы хотите использовать один и тот же цветовой цикл для множества графиков с разным количеством линий?Одна из тактик - использовать формулу, подобную той, что приведена на https://gamedev.stackexchange.com/a/46469/22397 , для создания бесконечной последовательности цветов, в которой каждый цвет пытается значительно отличаться от всех предшествующих.
К сожалению,
prop_cycle
не принимает бесконечные последовательности - он будет зависать навсегда, если вы передадите ему одну. Но мы можем взять, скажем, первые 1000 цветов, сгенерированных из такой последовательности, и установить их как цветовой цикл. Таким образом, для графиков с любым нормальным количеством линий вы должны получить различимые цвета.Пример:
Вывод:
Теперь все цвета разные - хотя я признаю, что мне трудно различить некоторые из них!
источник