matplotlib에서 변수를 위 첨자로 올바르게 표시

5289 단어 파이썬matplotlib
조금 곤란했기 때문에 비망록입니다.
환경은 Python 3.8.0, matplotlib 3.1.2입니다.

사안



matplotlib에서 변수 a를 위 첨자로 출력하려고하고 다음과 같은 코드를 작성했습니다.
import numpy as np
import matplotlib.pyplot as plt

a = 14
x = np.arange(0, 1, 0.1)
y = x**a

plt.plot(x, y, label=rf'$y=x^{a}$') # 問題の箇所
plt.legend()
plt.show()

막상 플롯해 보면, 다음과 같은 그림을 얻을 수 있었습니다.

불행히도 변수 a의 첫 번째 문자 만 위 첨자로 식별되었습니다.

죄송합니다. $y=x^{{a}}$ 와 같이 괄호를 하나 늘려 플롯해 보면 $y=x^a$ 라고 표시되어 버렸습니다.

해결책



그 결과 다음과 같이 삼중으로 괄호를 늘려 해결했습니다.
import numpy as np
import matplotlib.pyplot as plt

a = 14
x = np.arange(0, 1, 0.1)
y = x**a

plt.plot(x, y, label=rf'$y=x^{{{a}}}$') # ズバッと解決
plt.legend()
plt.show()





파이썬 문서에 썼습니다.

문자열 중 파괄호 밖에 있는 부분에 대해서는 써 있는 대로 취급됩니다. 다만 이중의 파괄호 '{{' 또는 '}}' 는, 각각에 대응하는 일중의 파괄호로 치환됩니다.

즉 최초의 파괄호가 일중의 경우 「 f'{a}' 」에서는, a14 로 치환되어 파괄호가 지워져 처리되었으므로, 1 문자째만이 위 첨자가 되었네요.

다음에 이중의 경우 「f'{{a}}' 」에서는, 이중의 파괄호가 단일의 파괄호로 치환되어 a 는 그대로{a}가 처리되었으므로, $y=x^a$ 라고 표시되어 버렸네요.

그래서 삼중 "f'{{{a}}}'"로 하면 이중의 파괄호가 단일의 파괄호로 치환되고 a14로 치환되어 붙은 문자로 인식되었습니다.

다음과 같은 느낌입니다.
a = 14
print(f'x^{a}')     # x^14
print(f'x^{{a}}')   # x^{a}
print(f'x^{{{a}}}') # x^{14}

Tex 구문으로 올바른 것은 맨 아래입니다.

이상입니다. 파이썬 최선을 다하겠습니다.

좋은 웹페이지 즐겨찾기