猿问

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

我使用可用的 PythonGetDist工具:GetDist 工具

我的问题很简单。我想将图例第二行的一部分推到右侧。目前,我默认有以下行为:

我想将部分文本“ a = 300”的位置修改为右侧,在第一行的同一水平级别,即与a = 200第一行的“”处于相同的“级别”,然后在“标准”之间创建一个空格,考虑到”和“a = 300”:这就是我想要得到的。

目前我还没有找到可以执行此操作的函数或处理此规范的简单选项。

更新

我尝试了更新版本@ted930511,即:

# g.settings

g = plots.get_subplot_plotter()


# Push Fom to the right into legend

renderer = 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))

但它被推到了右边太多了。结果如下:

https://img4.mukewang.com/65129f4e0001ff9415560206.jpg

我已经打印了 shift 的值:shift = 898.1568

也许这个值太大了。如何仅将“a = xxx”部分推到图例右侧?


泛舟湖上清波郎朗
浏览 90回答 1
1回答

qq_笑_17

这是你想要的吗?import matplotlib.pyplot as pltfrom matplotlib.font_manager import FontPropertiesfontP = 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))
随时随地看视频慕课网APP

相关分类

Python
我要回答