matplotlib图例标志和文本未对齐

3 投票
1 回答
1178 浏览
提问于 2025-05-10 21:21

我在给图表的图例添加下标时遇到了问题。如果我不在图例文本中使用下标,所有的内容看起来都很好,图例的标记和文本对齐得也很不错。但是一旦使用了下标,文本的字体就会改变,而且它会卡在图例框的顶部。这是我设置图例的方式:

        ax.legend(loc='upper center', bbox_to_anchor=(0.5, 1.12),
             ncol=4,prop={'size':16})

图例是这样的:

        legend_labels=['BR:$K_r$=5%',"BR:$K_r$=10%","Tape:$K_r$=5%","Tape:$K_r$=20%","HDD:$K_r$=5%","HDD:$K_r$=20%","SSD:$K_r$=5%","SSD:$K_r$=20%"]

我在StackOverflow上也看到过很多关于文本和图例对齐的问题,但那些建议的解决方案对我都没用。我尝试从图例中获取文本并将对齐方式设置为“居中”,但还是没有效果。

这是一个最小的可工作示例。

    from matplotlib.pyplot import *

    subplot(211)
    plot([1,2,3], label="$test_1$")
    plot([3,2,1], label="test2")
    legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3,
           ncol=2, mode="expand", borderaxespad=0.,prop={'size':18})
    show()

我使用的是Python 2.7.6。

相关文章:

  • 暂无相关问题
暂无标签

1 个回答

0

字体的不同是因为数学模式的原因:用美元符号把文本包起来,告诉matplotlib要用LaTeX来处理这些文本,而LaTeX的数学字体(叫做Computer Modern)和matplotlib用的普通文本字体(比如Liberation Sans)是不一样的。要避免这个误解,最简单的方法就是只在索引部分使用数学模式:

plot([1,2,3], label="test$_1$")

这样的话,数学字体就只会用于索引部分:

enter image description here

撰写回答