matplotlib中的图例对齐

我正在尝试使图例中的标签左对齐,值右对齐。在下面的代码中,我尝试使用format方法,但是值未正确对齐。

任何提示/建议,我们将不胜感激。

import matplotlib.pyplot as pl

# make a square figure and axes
pl.figure(1, figsize=(6,6))

labels = 'FrogsWithTail', 'FrogsWithoutTail', 'DogsWithTail', 'DogsWithoutTail'
fracs = [12113,8937,45190, 10]

explode=(0, 0.05, 0, 0)
pl.pie(fracs, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True)
pl.title('Raining Hogs and Dogs', bbox={'facecolor':'0.8', 'pad':5})

legends = ['{:<10}-{:>8,d}'.format(labels[idx], fracs[idx]) for idx in    range(len(labels))]

pl.legend(legends, loc=1)

pl.show()
博士

您的实现有两个问题。首先,您的饼图标签的长度远远超过您为其分配的字符数.format()(最长为16个字符,最多只能有10个字符的空间)。要解决此问题,请将legend更改为:

legends = ['{:<16}-{:>8,d}'.format(labels[idx], fracs[idx]) for idx in    range(len(labels))]
                ^-- change this character

但是,这只会使情况有所改善。这是因为默认情况下,matplotlib使用的是可变宽度字体,这意味着像m这样的字符比i这样的字符占用更多的空间通过使用固定宽度的字体可以解决此问题。在matplotlib中,这是通过以下方式实现的:

pl.legend(legends, loc=1, prop={'family': 'monospace'})

结果排列很好,但是等宽字体的缺点是有些难看: 在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在matplotlib中对齐图例行

来自分类Dev

使用 matplotlib 图例中的格式进行文本对齐

来自分类Dev

对齐matplotlib中各个点的标记,并在Python中删除matplotlib中标记的“双”图例

来自分类Dev

matplotlib图例符号和文本未对齐

来自分类Dev

matplotlib图例符号和文本未对齐

来自分类Dev

matplotlib中的重叠图例

来自分类Dev

matplotlib中的表图例

来自分类Dev

Matplotlib图例中的字幕

来自分类Dev

matplotlib中的图例

来自分类Dev

在 matplotlib 中处理图例?

来自分类Dev

matplotlib图例中缺少标签

来自分类Dev

在matplotlib中获取图例的宽度

来自分类Dev

matplotlib中的阴影图例行

来自分类Dev

在ggplot中对齐图例文本

来自分类Dev

matplotlib中图例中的重复项?

来自分类Dev

matplotlib中图例中的多个标题

来自分类Dev

图例覆盖图例-Matplotlib

来自分类Dev

如何清除图例中的matplotlib标签?

来自分类Dev

python matplotlib中基于Colorbar的图例

来自分类Dev

图例对matplotlib中的水平网格透明

来自分类Dev

通过matplotlib图例中的标记删除线

来自分类Dev

matplotlib散点图图例中缺少标签

来自分类Dev

如何确定matplotlib图例中的项目顺序?

来自分类Dev

在matplotlib中自定义图例

来自分类Dev

如何从Matplotlib规范中删除图例?

来自分类Dev

在Matplotlib中显示多个线图例

来自分类Dev

Matplotlib图例未显示在绘图方法中

来自分类Dev

在matplotlib的图例中插入先前计算的值

来自分类Dev

matplotlib 绘图图例中的上标格式