为了账号安全,请及时绑定邮箱和手机立即绑定

使用 GetDist 工具的 Python 图例:将第二行的一部分推到右侧,同时将另一部分保留到左侧

使用 GetDist 工具的 Python 图例:将第二行的一部分推到右侧,同时将另一部分保留到左侧

泛舟湖上清波郎朗 2023-09-26 17:05:48
我使用可用的 PythonGetDist工具:GetDist 工具我的问题很简单。我想将图例第二行的一部分推到右侧。目前,我默认有以下行为:我想将部分文本“ a = 300”的位置修改为右侧,在第一行的同一水平级别,即与a = 200第一行的“”处于相同的“级别”,然后在“标准”之间创建一个空格,考虑到”和“a = 300”:这就是我想要得到的。目前我还没有找到可以执行此操作的函数或处理此规范的简单选项。更新我尝试了更新版本@ted930511,即:# g.settingsg = plots.get_subplot_plotter()# Push Fom to the right into legendrenderer = g.fig.canvas.get_renderer()shift = max([t.get_window_extent(renderer).width for t in g.legend.get_texts()])for t in g.legend.get_texts():    t.set_ha('right') # ha is alias for horizontalalignment    t.set_position((shift,0))但它被推到了右边太多了。结果如下:我已经打印了 shift 的值:shift = 898.1568也许这个值太大了。如何仅将“a = xxx”部分推到图例右侧?
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

这是你想要的吗?


import matplotlib.pyplot as plt

from matplotlib.font_manager import FontProperties


fontP = FontProperties()

fontP.set_size('xx-small')


fig = plt.figure(figsize=(7.2, 7.2/2))

ax = fig.add_axes([0.1, 0.1, 0.3, 0.8])

p1, = ax.plot([1, 2, 3], label='Opt. Flat. No Gamma. - cross - standard situation - Criterion taken into account a=200')

p2, = ax.plot([3, 2, 1], label='Pess. Flat. No Gamma. - Criterion taken into account                                            a=200')

legend = ax.legend(handles=[p1, p2], bbox_to_anchor=(1.05, 1), loc='upper left', prop=fontP)


#renderer = fig.canvas.get_renderer()

#shift = max([t.get_window_extent(renderer).width for t in legend.get_texts()])

#for t in legend.get_texts():

#    t.set_ha('right') # ha is alias for horizontalalignment

#    t.set_position((shift,0))

https://img1.sycdn.imooc.com//65129f6000012ba006530326.jpg

查看完整回答
反对 回复 2023-09-26
  • 1 回答
  • 0 关注
  • 88 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信