Я хотел бы создать довольно много диаграмм, которые очень похожи на рисунок ниже.
import matplotlib.pyplot as plt
import numpy as np
labels = ['2015', '2016', '2017', '2018', '2019']
group_a = [20, 34, 30, 35, 27]
group_b = [25, 32, 34, 20, 25]
group_c = [10, 14, 10, 20, 17]
group_d = [16, 4, 8, 15, 18]
x = np.arange(len(labels))
width = 0.2
fig, ax = plt.subplots(figsize=(14, 7))
ax.bar(x - width/2, group_a, width, label='Group 1')
ax.bar(x + width/2, group_b, width, label='Group 2')
ax.bar(x + width/2 +width, group_c, width, label='Group 3')
ax.bar(x - width/2 -width, group_d, width, label='Group 4')
ax.set_xticks(x)
ax.set_xticklabels(labels)
ax.legend(loc='upper left',
bbox_to_anchor=(0.075, -0.075),
fancybox=True,
ncol=2,
fontsize=8,
frameon=False)
ax.annotate('Categorie 1\nCategorie 2',
xy=(0, 0),
xytext=(0, -55),
linespacing=1.7,
Fontsize=8,
textcoords='axes points')
fig.tight_layout()
plt.show()
Фигуры в порядке, но я изо всех сил стараюсь расположить легенду и аннотацию, поскольку размер фигуры меняется.Используя figsize (7,2), легенда перемещается вверх и вправо, в то время как аннотация остается в том же положении:
Вопрос: Как я могу исправитьположение легенды, даже когда изменится фигура?Для легенды я не нашел решения, похожего на использование textcoords = «точки осей», которое гарантирует, что аннотация останется на том же месте независимо от размера рисунка.
Я не нашел ни одногоРешения для легенды пока нет.Мне было интересно, сработает ли следующее или есть ли другие решения, о которых я пока не думал
Используя ax.legend (), пытаясь установить фиксированную точку относительно команды ax.annotate ()
Использование новой команды с такими же аргументами, как annotate («точки осей»)
Использование новых классов, таких как artist (),remove () и так далее, которые дают те же результаты, что и команда legend ()
Есть идеи, как решить эту проблему?Заранее благодарен за любую помощь!
С уважением