Гистограмма: используйте цветовой цикл для края цвета - PullRequest
0 голосов
/ 26 марта 2020

Мне нужна гистограмма с краями, но без заливок. Это я могу получить с

import matplotlib.pyplot as plt
fig, axes = plt.subplots()
axes.bar(1, 1, color='None', edgecolor='purple')
axes.bar(2, 2, color='None', edgecolor='red')

Однако , я хочу, чтобы цвета ребер исходили из стандартного color_cycle осей. Я не смог найти ни одного объекта c. Единственное, что работает, это

import matplotlib.pyplot as plt
fig, axes = plt.subplots()
axes.bar(1, 1, color='None', edgecolor=axes._get_lines.get_next_color())
axes.bar(2, 2, color='None', edgecolor=axes._get_lines.get_next_color())

, который кажется невероятно счастливым. Есть ли лучший способ добиться этого?

1 Ответ

0 голосов
/ 26 марта 2020

Я не думаю, что вы предлагаете outlandi sh. Если вы хотите, вместо этого вы получите копию итератора:

import matplotlib.pyplot as plt

fig, axes = plt.subplots()
cycler = axes._get_lines.prop_cycler
axes.bar(1, 1, color='None', edgecolor=next(cycler)['color'])
axes.bar(2, 2, color='None', edgecolor=next(cycler)['color'])

Или, если вам кажется, что «hacki sh» выглядит менее, получите Cycler из rcParams:

import matplotlib.pyplot as plt
import itertools

cycler = itertools.cycle(plt.rcParams['axes.prop_cycle'])
fig, axes = plt.subplots()
axes.bar(1, 1, color='None', edgecolor=next(cycler)['color'])
axes.bar(2, 2, color='None', edgecolor=next(cycler)['color'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...