【问题标题】:如何修改图例中的文字排列
【发布时间】:2022-01-11 12:59:02
【问题描述】:

我想自定义matplotlib图例文本每一列的行数。

代码是:

import matplotlib.pyplot as plt
import numpy as np

for i in range(10):
    plt.plot(np.linspace(0, 5, 5), np.random.randint(0, 10, 5), label=str(i))

plt.legend(ncol = 3, loc = 1)
plt.show()

我得到:每列的行数是 4、3、3

我想要的:每列的行数是4、4、2

我尝试在plt.show() 之前添加plt.plot([], [], label=''),但没有帮助

【问题讨论】:

    标签: python matplotlib legend


    【解决方案1】:

    我通过添加一条不可见的线作为第 11 个元素解决了这个问题,如下所示:

    import matplotlib.pyplot as plt
    import numpy as np
    
    lines = []
    for i in range(10):
        l, = plt.plot(np.linspace(0, 5, 5), np.random.randint(0, 10, 5), label=str(i))
        lines.append(l)
    
    l, = plt.plot(0, alpha=0, label=' ')   
    # alpha=0 will make the line and element in the legend invisible
    lines.append(l)
    
    plt.legend(handles=[l for l in lines], ncol = 3, loc = 1)
    plt.show()
    

    这将产生以下结果:

    【讨论】:

    • 有效!非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2012-08-21
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 2011-01-30
    相关资源
    最近更新 更多