Как преодолеть перекрытие меток на кольцевом графике?Python

Программы на Python
Ответить
Anonymous
 Как преодолеть перекрытие меток на кольцевом графике?

Сообщение Anonymous »

Метки на графике перекрываются друг с другом, когда размер значения мал
Диаграмма с перекрывающимися метками
Это код, который я пробовал.
импортировать matplotlib.pyplot как plt
импортировать numpy как np
Data< /h1>
labels = ["225 г муки", "90 г сахара", "1 яйцо", "60 г сливочного масла", "100 мл молока", "1/2 пакета дрожжей", "abcd", "efg", "hik"]
размеры = [225, 90, 1, 5, 200, 1, 3, 100, 5]
рис, топор = plt.subplots(figsize=(7, 4), subplot_kw=dict(aspect="equal"))
explode = [0.01] * len(sizes) # Небольшое развертывание для всех сегментов
клинья, texts = ax.pie(sizes, Explode=explode, radius=1.2, startangle=90, wedgeprops=dict(width=0.4))
centre_circle = plt.Circle((0, 0), 0,40, fc='white')
ax.add_artist(center_circle)
kw = dict(arrowprops=dict(arrowstyle="-"), zorder=0, va="center")
для i, p в перечислении(клинья):

Код: Выделить всё

ang = (p.theta2 - p.theta1) / 2. + p.theta1
x = np.cos(np.deg2rad(ang))
y = np.sin(np.deg2rad(ang))
yc = np.arcsin(y)/(np.pi/2)
horizontalalignment = {1: "left", -1: "right"}[int(np.sign(x))]
connectionstyle = f"angle,angleA=0,angleB={ang}"
kw["arrowprops"].update({"connectionstyle": Connectionstyle})
ax.annotate(labels, xy=(0.8x, 0,8y), xytext=((1+(len(labels)%2)*0,6)*np.sign(x), 1,4 * yc),
horizontalalignment=horizontalalignment, fontsize=10, **kw)
Добавить заголовок
ax.set_title("Кольцевая диаграмма", fontsize =14)
Показать график
plt.show
()

Подробнее здесь: https://stackoverflow.com/questions/792 ... onut-graph
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»