首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在matplotlib中对齐注释文本和图例?

如何在matplotlib中对齐注释文本和图例?
EN

Stack Overflow用户
提问于 2017-07-02 22:54:58
回答 2查看 2.2K关注 0票数 1

我现在的图有一个关于对齐的问题。下面是我的图

我想要的是对齐注解文本和图例,如下所示

有什么方法可以做到这一点吗?

下面是我的绘图代码。

代码语言:javascript
复制
from pylab import *
import re
matplotlib.rc('xtick', labelsize=16) 
matplotlib.rc('ytick', labelsize=16) 
plt.rcParams['font.size'] = 16
plt.rcParams['axes.labelsize'] = 16
plt.rcParams['xtick.labelsize'] = 16
plt.rcParams['ytick.labelsize'] = 16
plt.rcParams['legend.fontsize'] = 16
rc('font',family='Arial')


fig, ax = plt.subplots(figsize=(5,4))
x = array([2.2,4.4])
a = array([1,2])
b = array([1,2])
c = array([1,2])
total_width, n = 1, 3
width = total_width / n
x = x - width*1.5



xmarks=[2.2,4.4]

plt.xticks(xmarks)
xx=plt.bar(x, a,  width=width, color='r',alpha=0.5,label='0%')
xy=plt.bar(x + width, b, width=width, color='b',alpha=0.5,label='60%')
xz=plt.bar(x + 2 * width, c, width=width,color='g', alpha=0.5,label='100%')

extra = Rectangle((0, 0), 1, 1, fc="w", fill=False, edgecolor='none', linewidth=0)
leg=ax.legend([extra, xx, xy,xz], ("IOTs replacement\nwith FAC", "0%", "60%",'100%'),loc='upper left')

leg.get_frame().set_alpha(0.0)
plt.show()
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-02 23:02:18

为此,最好使用title参数:

代码语言:javascript
复制
leg = ax.legend([xx, xy,xz], 
                ("0%", "60%",'100%'),
                title="IOTs replacement\nwith FAC",
                loc='upper left')

看起来您需要对图例和标题的位置进行一些手动调整:

代码语言:javascript
复制
leg = ax.legend([xx, xy,xz], 
                ("0%", "60%",'100%'),
                title="IOTs replacement\nwith FAC",
                loc=(-0.035, 0.48))
leg.get_title().set_position((18, 0))

票数 1
EN

Stack Overflow用户

发布于 2017-07-02 23:36:05

图例可以有一个由title参数指定的标题。图例和轴边界之间的间距由参数borderaxespad确定,该参数可以设置为零。

要使图例本身向左,您可以将图例的_legend_box.align设置为“left aligned in the legend box”。

代码语言:javascript
复制
leg=ax.legend([xx, xy,xz], ("0%", "60%",'100%'),
              loc='upper left',
              title = "IOTs replacement\nwith FAC", 
              borderaxespad=0)

leg.get_frame().set_alpha(0.0)
leg._legend_box.align = "left"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44872114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档