Верхний индекс в легенде сюжета matplotlib - PullRequest
0 голосов
/ 14 декабря 2018

Я делаю некоторую подгонку кривой с прекрасной подгонкой кривой скиппи.При построении графика и добавлении метки условных обозначений для отображения рассчитанных параметров, использование $^{}$, чтобы верхний индекс между битами работал, только когда записана строка, а не при вызове из формата строки.то есть $x^{}$.format(3) неправильно форматирует, но $x^3$ делает.

Должно ли это работать?Нужно ли мне делать что-то еще, если я предоставляю информацию для лейбла легенды?

Пример кода и график ниже.Спасибо.

import matplotlib.pyplot as plt
import numpy as np
from scipy.optimize import curve_fit

x_data = np.linspace(0.05,1,101)
y_data = 1/x_data
noise = np.random.normal(0, 1, y_data.shape)
y_data2 = y_data + noise

def func_power(x, a, b):
    return a*x**b 

popt, pcov= curve_fit(func_power, x_data, y_data2)

plt.figure()
plt.scatter(x_data, y_data2, label = 'data')
plt.plot(x_data, popt[0] * x_data ** popt[1], label = ("$y = {}x^{}$").format(round(popt[0],2), round(popt[1],2)))
plt.plot(x_data, x_data**3, label = '$x^3$')
plt.legend()
plt.show()

enter image description here

1 Ответ

0 голосов
/ 14 декабря 2018

Чтобы MathText интерпретировал фигурные скобки, они должны присутствовать после форматирования.Таким образом, вы захотите использовать пару фигурных скобок, внутренние для форматирования, внешние для функциональности MathText.Внешние тогда все еще должны быть экранированы, чтобы не использоваться для форматирования.Это приводит к 3 фигурные скобки.

label = ("$y = {{{}}}x^{{{}}}$").format(round(popt[0],2), round(popt[1],2))

enter image description here

...