Я хочу назначить определенные цвета столбцам гистограммы на основе многочисленных номинальных и порядковых условий.
Мои данные выглядят примерно так:
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()
Текущий вывод:
Радиальная гистограмма
Заранее спасибо.