下面的 MWE 产生如下图所示的情节:
行标签 、X
、Y
,Z
与条形图右侧重叠,看起来不太美观。我希望它们能向右移动一些,在图表和表格之间留出一点空白。matplotlib.pyplot.table的文档中没有提供任何loc
选项来实现这一点。bbox
参数或许允许,但似乎需要反复尝试不同的边界框才能实现。
有没有办法让它布置得更清楚?
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(9, 5), dpi=300)
ax = sns.barplot(
x = range(1, 3),
y = [15,30],
legend=False,
)
plt.table(cellText=['A','B','C'], rowLabels=['X','Y','Z'], colWidths=[0.15], loc='right')
plt.show()
诀窍是将你的图形分成两个轴,而不是在条形轴上方绘制表格;
make_axes_locatable(ax)
+append_axes("right", size="20%", pad=0.2)
在右侧雕刻出一条狭窄的填充条带,axis("off")
隐藏其刻度/脊柱,并将ax_table.table(…)
你的表格绘制在那里,这样它就不会与条形重叠。这是我能想到的最好的办法:
输出:
您可以使用pyplot.subplots将条形图和表格彼此相邻放置,并通过将每个条形图和表格添加到斧头上来使其之间留有空间。
附言:我降低了字体大小,因为它们溢出了我在重现的代码中的单元格的高度。
您可以使用 bbox 选项: