/ / Czy jest możliwe użycie metody formatu ciągów python z możliwościami lateksowymi matplotlibs? - python, matplotlib

Czy możliwe jest użycie metody formatu łańcucha python z możliwościami latexu matplotlibs? - python, matplotlib

W przypadku matplotlib możliwe jest użycie lateksu do etykietowania osi i wykresów. to znaczy

import matplotlib.pyplot as plt

data = pandas.DataFrame({"A": [1, 2, 3, 4, 5],
"B": [6, 7, 8, 9, 10],
"C": [11, 12, 13, 14,15]})
data["A/B"] = data["A"]/data["B"]
plt.plot(data["C"], data["A/B"])
new_name1 = "new_name"
new_name2 = "new_name"
plt.title(r"$frac{A}{B}$")
plt.show()

wprowadź opis obrazu tutaj

Chciałbym połączyć lateks z łańcuchem pytona .format metoda. (Chociaż nie jest to konieczne w tym abstrakcyjnym przykładzie, jest to w mojej pracy).

import matplotlib.pyplot as plt

data = pandas.DataFrame({"A": [1, 2, 3, 4, 5],
"B": [6, 7, 8, 9, 10],
"C": [11, 12, 13, 14,15]})
data["A/B"] = data["A"]/data["B"]
plt.plot(data["C"], data["A/B"])
new_name1 = "new_name1"
new_name2 = "new_name2"
plt.title(r"$frac{{}}{{}}$".format(new_name1, new_name2))
plt.show()

daje mi:

Traceback (most recent call last):
File "/home/b3053674/Documents/LargeStudy/large_study/plot_locally.py", line 912, in <module>
plt.title(r"$frac{{}}{{}}$".format(new_name1, new_name2))
KeyError: "\{\}"

i

import matplotlib.pyplot as plt

data = pandas.DataFrame({"A": [1, 2, 3, 4, 5],
"B": [6, 7, 8, 9, 10],
"C": [11, 12, 13, 14,15]})
data["A/B"] = data["A"]/data["B"]
plt.plot(data["C"], data["A/B"])
new_name1 = "new_name"
new_name2 = "new_name"
plt.title(r"$frac{{}}{{}}$".format(new_name1, new_name2))
plt.show()

daje mi:

ValueError:
frac{}{}
^
Expected frac{num}{den} (at char 5), (line:1, col:6)

Czy w ten sposób można użyć formatowania łańcuchów za pomocą lateksu? Jeśli tak, jak mam to zrobić?

Odpowiedzi:

2 dla odpowiedzi № 1

Potrzebujesz trzech szelek:

plt.title(r"$\frac{{{}}}{{{}}}$".format(new_name1, new_name2))

Wewnętrzna para {} zostanie sformatowany przy użyciu podanych zmiennych i zewnętrznego {{ i }}Sekwencje ewakuacyjne na singiel { i }.


1 dla odpowiedzi nr 2

Prosty sposób to użyć printfpodobne do formatowania:

data = "frac{%s}{%s}" % ("A", "B")