#python #matplotlib #pie-chart #subplot #axes
Вопрос:
Прямо сейчас у меня есть график, состоящий из набора кругов в таблице (с использованием PatchCollection).
Я пытаюсь добавить круговую диаграмму в конец каждой строки и каждого столбца. Данные для этих круговых диаграмм не будут иметь отношения к тем, которые используются в остальной части таблицы, так что это не проблема. Учитывая, что это таблица 9х9, моим первым побуждением было использовать:
plt.subplots(10,10)
Проблема в том, что я хочу, чтобы эта таблица занимала площадь 9×9, а затем имела круговую диаграмму, в которой были указаны последние строки и столбцы. Я попытался просто вручную установить все подзаголовки, кроме [0,0] и последней строки/столбца, в положение off с помощью:
ax[rows, cols].axis('off')
но это только сделало мой пузырьковый столик действительно маленьким.
Я также попытался сделать его участком 2×2 с круговыми диаграммами в качестве коллекции патчей как таковой:
fig, ax = plt.subplots(2,2)
pies = []
for i in range(9):
pies.append(plt.pie([10,20,30])
col = PatchCollection(pies)
но это не сработало, учитывая, что коллекции патчей ищут что-то другое, я верю.
Как бы я справился с этим? Код для любопытных:
fig, ax = plt.subplots(figsize=(6, 6))
plt.subplots_adjust(left=0.25, bottom=0.05, right=0.85, top=0.65)
circles = []
for y in range(N):
for x in range(M):
circle = plt.Circle((x, y), radius=vals[y][x] / 19 / 2)
circles.append(circle)
col = PatchCollection(circles, array=vals.flatten(), cmap="Blues")
col.set_edgecolors('dimgrey')
col.set_linewidth(0.5)
ax.add_collection(col)
ax.set(xticks=np.arange(M),
yticks=np.arange(N),
xticklabels=xlabels,
yticklabels=ylabels)
ax.set_xticks(np.arange(M 1) - 0.5, minor=True)
ax.set_yticks(np.arange(N 1) - 0.5, minor=True)
ax.grid(b=False, which='minor')
ax.xaxis.set_ticks_position('top')
plt.draw()
ax.set_xticklabels(xlabels, rotation=90, horizontalalignment='center')
plt.show()
Я также довольно новичок в matplotlib/python, поэтому любые общие предложения также приветствуются.