假设我有两个array.

array1 = ['foofoo', 'bar']
array2 = ['foo', 'bar']

我可以打印这两个数组的每个可能组合.

for A in array1:
    for B in array2:
        print('{} {}'.format(A, B))
>>>
foofoo foo
foofoo bar
bar foo
bar bar

这很难看,所以我可以在打印时保留空白,以便第二部分对齐,如下所示:

for A in array1:
    for B in array2:
        print('{:7s} {}'.format(A, B))
>>>
foofoo  foo
foofoo  bar
bar     foo
bar     bar

那可漂亮多了.我曾try 对图例标签执行相同的操作,但不起作用:

x = np.linspace(0,50, 100)

array1 = ['foofoo', 'bar']
array2 = ['foo', 'bar']

for A in array1:
    for B in array2:

        y = [random.random() for x in x]
        y.sort()

        legend_label = r"{:7s} {}".format(A, B)
        plt.plot(x,y, label=legend_label)
    
plt.legend()

enter image description here

如何实现在matplotlib图例标签中保留空白的预期行为,以便在列中对齐它,如print('{:7s} {}'.format(A, B))示例所示.

推荐答案

您需要使用单空格字体才能根据字符数对齐:

plt.legend(prop={'family': 'monospace'})

输出:

aligned legend

Python相关问答推荐

根据网格和相机参数渲染深度

如何使用Google Gemini API为单个提示生成多个响应?

处理带有间隙(空)的duckDB上的重复副本并有效填充它们

优化pytorch函数以消除for循环

使用@ guardlasses. guardlass和注释的Python继承

通过pandas向每个非空单元格添加子字符串

SQLAlchemy Like ALL ORM analog

形状弃用警告与组合多边形和多边形如何解决

有没有一种ONE—LINER的方法给一个框架的每一行一个由整数和字符串组成的唯一id?

如何并行化/加速并行numba代码?

SQLAlchemy bindparam在mssql上失败(但在mysql上工作)

用渐近模计算含符号的矩阵乘法

基于形状而非距离的两个numpy数组相似性

循环浏览每个客户记录,以获取他们来自的第一个/最后一个渠道

如何在信号的FFT中获得正确的频率幅值

PySpark:如何最有效地读取不同列位置的多个CSV文件

Django.core.exceptions.SynchronousOnlyOperation您不能从异步上下文中调用它-请使用线程或SYNC_TO_ASYNC

启动线程时,Python键盘模块冻结/不工作

如何在Quarto中的标题页之前创建序言页

如何通过特定导入在类中执行Python代码