如何为matplotlib图例标签返回由分数内的上标组成的字符串? [复制]

Posted

技术标签:

【中文标题】如何为matplotlib图例标签返回由分数内的上标组成的字符串? [复制]【英文标题】:How to return string composed of superscript inside of fraction for matplotlib legend label? [duplicate] 【发布时间】:2019-07-11 00:41:06 【问题描述】:

我编写了一个绘制xy 数据的例程。此代码还计算第 n 个导数 d/dx^n (y) 更改符号的索引,其中 n 被指定为函数参数。我想将此导数作为图例标签包含在 matplotlib 图中。

如果预先确定,我可以创建一个标签来包含它。例如,如果n被预先确定为2,那么:

label = r'$\fracd^2ydx^2$'

但是由于n是一个函数参数,我不知道如何将它分配给分数。作为示例(包含失败的尝试),请参见下文:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(1, 10, 10)
y = x

def f(x, y, n):
    """ """
    fig, ax = plt.subplots()
    if n == 1:
        label = r'$\fracdydx = 0$'
    else:
        numerator = 'd^y'.format(n)
        denominator = 'dx^'.format(n)
        # label = r'$\frac$'.format(numerator, denominator)
        # label = '$\frac$'.format(numerator, denominator)
        # label = '$\fracnumeratordenominator$'
        label = r'$\fracnumeratordenominator$'
    ax.scatter(x, y, c='r', marker='.', s=5, label=label)
    ax.legend(loc='upper left')
    plt.show()
    plt.close(fig)

f(x, y, n=1)
f(x, y, n=2)

我只关心图例标签。我怎样才能得到一个字符串分数的所需输出,其分子显示为r'$d^ny$',其分母显示为r'$dx^n$'(其中n是一个数字)?

【问题讨论】:

【参考方案1】:

您可以使用字符串格式化语法%s 来执行此操作,如下所示:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(1, 10, 10)
y = x

def f(x, y, n):
    """ """
    fig, ax = plt.subplots()
    if n == 1:
        label = r'$\fracdydx = 0$'
    else:
        numerator = 'd^y'.format(n)
        denominator = 'dx^'.format(n)
        label = r'$\frac%s%s$' %(numerator, denominator)
    ax.scatter(x, y, c='r', marker='.', s=5, label=label)
    ax.legend(loc='upper left', fontsize=18)
    plt.show()
    plt.close(fig)

【讨论】:

以上是关于如何为matplotlib图例标签返回由分数内的上标组成的字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Matplotlib 图例

如何在 matplotlib 中为 3D 条形图创建图例?

如何为每组线添加单个图例标签

如何为图形级功能编辑 seaborn 图例标题和标签

如何为 matplotlib 散点图放置单个标签?

如何为 matplotlib.pyplot.matshow 绘图添加标签和标题