Python 即使图形大小发生变化,如何确定图例的位置?
我想创建一些与下图非常相似的图表Python 即使图形大小发生变化,如何确定图例的位置?,python,matplotlib,position,legend,figure,Python,Matplotlib,Position,Legend,Figure,我想创建一些与下图非常相似的图表 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.
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=“axes points”的解决方案,它可以确保注释保持在相同的位置,而不管图形的大小
我还没有找到任何解决传奇的办法。我想知道下面的方法是否可行,或者是否还有其他我还没有想到的解决方案
- 使用ax.legend()尝试设置与命令ax.annotate()相关的固定点
- 使用具有类似参数的新命令,如annotate(“轴点”)
- 使用新类,如artist()、remove()等,它们提供与命令legend()相同的结果
关于与“轴点”类似的内容,您可能会冒文本在图形之外的风险。您是否总是使用
savefig(…,bbox_inches=“tight”)
方法进行保存?如果您想确保图例或文本始终在图形内部,请检查。我已经尝试过这个方法。重要的是将图例固定在图形外部,并固定在与图1完全相同的位置。使用类似“轴点”的方式,您可能会冒文本位于图形外部的风险。是否始终使用savefig(…,bbox_inches=“tight”)
方法进行保存?如果要确保图例或文本始终位于图形内部,检查,我已经试过了。重要的是将图例固定在图外,并与图1完全相同的位置。