I'm trying to make a title for a plot, but the title includes a variable, which I'm inserting using an f-string, but it also includes a Latex expression. I either get an error that f-string expressions do not take \ character, or else it's trying to read what's inside the equation as variables and complaining that it's not defined.
The code I'm trying looks something like this:
test = 'TEST'
plt.plot(1234,5678)
plt.title(f"This is a {test}: ${\sqrt{b/a}}$")
plt.show()
This code will give me the error: "f-string expression part cannot include a backslash", and when I try this (note the extra brackets):
test = 'TEST'
plt.plot(1234,5678)
plt.title(f"This is a {test}: ${{\sqrt{b/a}}}$")
plt.show()
I get this error: "name 'b' is not defined"
I want it to just show a square root of b/a, where b and a are just the letters, not variables, so that it looks something like the plot below:
but I can't seem to make it work with an f-string variable also in the title.
CodePudding user response:
It has to be done like this:
plt.title(f"This is a {test}: ${{\sqrt{{b/a}}}}$")
Since you need to use the {
and }
characters, they need to be doubled up so that they are interpreted as literal characters. This will prevent it from interpreting the contents between the brackets as a Python expression. Thus, it will no longer complain about the backslash or undefined variables.
Alternatively, it can be put in a separate string to avoid doubling up the brackets. This is more readable in my opinion.
tex = "${\sqrt{b/a}}$"
plt.title(f"This is a {test}: {tex}")