Назначение определенных цветов столбцам в радиальной гистограмме Matplotlib (Python3) - PullRequest
0 голосов
/ 15 октября 2019

Я хочу назначить определенные цвета столбцам гистограммы на основе многочисленных номинальных и порядковых условий.

Мои данные выглядят примерно так:

Dataset Type        Dataset Count
Image               2
Video               10
Image               12
3D Model            1
Audio               3

Во-первых, япытаюсь назначить цвета по условию, как в следующей логике:

df['Dataset Type'] == 'Image' then red
df['Dataset Type'] == 'Video' then blue
df['Dataset Type'] == '3D Model' then green
etc.

Точно так же я хотел бы применить логику к числовым значениям, таким как:

df['Dataset Count'] <= 5 then hatch (stripe)
df['Dataset Count'] => 6 then hatch (star)

Я пробовал множествометоды, которые я нашел в stackoverflow, но может заставить работать только параметр булевого цвета.

Мой текущий код:

counts = df['Dataset Count']
labels = df['Dataset'] #the name of the actual datasets I'm examining

iN = len(counts)
arrCnts = np.array(counts)

theta=np.arange(0,2*np.pi,2*np.pi/iN)
width = (2*np.pi)/iN *0.8
bottom = 20

fig = plt.figure(figsize=(30,30))
ax = fig.add_axes([0.1, 0.1, 0.75, 0.75], polar=True)
bars = ax.bar(theta, arrCnts, width=width, bottom=bottom)
plt.axis('off')

rotations = np.rad2deg(theta)
y0,y1 = ax.get_ylim()

for x, bar, rotation, label in zip(theta, bars, rotations, labels):
    offset = (bottom+bar.get_height())/(y1-y0)
    lab = ax.text(0, 0, label, transform=None, 
         ha='center', va='center', size=10)
    renderer = ax.figure.canvas.get_renderer()
    bbox = lab.get_window_extent(renderer=renderer)
    invb = ax.transData.inverted().transform([[0,0],[bbox.width,0] ])
    lab.set_position((x,offset+(invb[1][0]-invb[0][0])/2.*2.7 ) )
    lab.set_transform(ax.get_xaxis_transform())
    lab.set_rotation(rotation)

plt.show()

Текущий вывод:

Радиальная гистограмма

Заранее спасибо.

...