Я пытаюсь создать круговые диаграммы с matplotlib
, в которых фиксирован цвет каждой категории.Назначение конкретных цветов для данных в круговой диаграмме Matplotlib
У меня есть функция, которая создает круговую диаграмму из наборов значений и данных категории. Вот один пример:
Category Value
TI 65
Con 43
FR 40
TraI 40
Bug 38
Data 22
Int 15
KB 12
Other 8
Dep 7
PW 6
Uns 5
Perf 4
Dep 3
Проблема заключается в том, что данные отличаются от одного экземпляра к другому, и что, в свою очередь изменяет порядок категорий. Таким образом, каждая категория получает каждый цвет, каждый раз, когда я создаю диаграмму. Я мог сортировать данные в алфавитном порядке каждый раз, но это вызывает две проблемы: некоторые категории отсутствуют в некоторых наборах данных, и я бы предпочел, чтобы он отсортировался по размеру так или иначе, чтобы наименьшие клины ориентировались горизонтально.
Как установить matplotlib
для назначения цветов в зависимости от, скажем, индекса pandas.Series
?
Вот код, который я использую для создания круговой диаграммы:
import matplotlib.pyplot as plt
slices = [62, 39, 39, 38, 37, 21, 15, 9, 6, 7, 6, 5, 4, 3]
cmap = plt.cm.prism
colors = cmap(np.linspace(0., 1., len(slices)))
labels = [u'TI', u'Con', u'FR', u'TraI', u'Bug', u'Data', u'Int', u'KB', u'Other', u'Dep', u'PW', u'Uns', u'Perf', u'Dep']
fig = plt.figure(figsize=[10, 10])
ax = fig.add_subplot(111)
pie_wedge_collection = ax.pie(slices, colors=colors, labels=labels, labeldistance=1.05, autopct=make_autopct(slices))
for pie_wedge in pie_wedge_collection[0]:
pie_wedge.set_edgecolor('white')
titlestring = 'Issues'
ax.set_title(titlestring)
EDIT: Я забыл объяснить функцию autopct
, это для добавления стоимости и процентных меток:
def make_autopct(values):
def my_autopct(pct):
total = sum(values)
val = int(round(pct*total/100.0))
return '{p:.2f}% ({v:d})'.format(p=pct,v=val)
return my_autopct
Спасибо, я дам ему идти. – Charon
Это работает! Спасибо. – Charon