построение линии над круговой диаграммой - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь нанести линии между данными, принадлежащими трем внутренним слоям, на следующей круговой диаграмме:

enter image description here

Черная линия на рисунке показывает, где должна быть одна из линий.

Однако я не могу понять, как установить правильную длину. Фактически, при использовании plt.plot([1-0.3, 1+0.4+0.5], [0, 0]) график кажется разумным для изменения начальной точки (x[0]), но не конечной точки (x[1]): он всегда заканчивается в одной и той же точке независимо от заданных мною значений. как x[1]. Кто-нибудь знает, как правильно построить эту линию?

Вот мой код:

import matplotlib.pyplot as plt
import numpy as np


fig, ax = plt.subplots()

### Data structure: 
# Network type:
group_names = ['Group 1', 'Group 2', 'Group 3']
group_vals = [43,49,38]
group_colors = ['w']*3

#Information level:
info_names = ['Subgroup 1', 'Subgroup 2', \
              'Subgroup 1', 'Subgroup 2',\
              'SSubgroup 1', 'Subgroup 2']
info_vals = np.array([[27,16],[26,23],[14,24]])
my_blue = [x/255 for x in [30,144,255]]
info_colors = [my_blue,'gray',\
               my_blue,'gray',\
               my_blue,'gray']

corr_vals = np.array([[10,3,7,3,4], [4,4,4,2,2],\
                     [10,5,5,3,3], [10,5,5,1,2],\
                     [4,4,2,2,2], [12,2,2,1,7]])
pale_green = [x/255 for x in [152,251,152]]
pale_red = [x/255 for x in [240,128,128]]
pale_gray = [x/255 for x in [169,169,169]]
corr_colors = ['green',pale_green,pale_gray,pale_red,'red', 'green',pale_green,pale_gray,pale_red,'red',\
               'green',pale_green,pale_gray,pale_red,'red', 'green',pale_green,pale_gray,pale_red,'red',\
               'green',pale_green,pale_gray,pale_red,'red', 'green',pale_green,pale_gray,pale_red,'red',]


pie_properties = ax.pie(group_vals, radius=1, colors=group_colors, 
       wedgeprops=dict(width=0.3, edgecolor='k'))

pie_properties = ax.pie(info_vals.flatten(), radius=1+0.4, colors=info_colors,
       wedgeprops=dict(width=0.4, edgecolor='w'))


ax.pie(corr_vals.flatten(), radius=1+0.4+0.5, colors=corr_colors,
       wedgeprops=dict(width=0.5, edgecolor='w'))

#line plotting
plt.plot([1-0.3, 1+0.4+0.5], [0, 0], linewidth=2, color='k')



ax.set(aspect="equal")
plt.show()

1 Ответ

0 голосов
/ 10 ноября 2018

Кажется, что линия обрезается.

matplotlib.axes.Axes.plot может быть передана опция для настройки отсечения.

ax.plot([1.4, 0], [0, 0], linewidth=2, color='k', clip_on=False)

image

...