图例标签与轴标签中的 matplotlib 乳胶
matplotlib latex in legend label vs in axis label
对于 matplotlib,您可以使用 tex 命令语法标记图例和轴标签。您应该 将 r 添加到字符串前:r"my tex label"。但我不明白的是为什么图例标签 不 关心 而 轴标签却关心
为什么轴标签的行为与图例标签不同(反之亦然)?
MWE1 - 崩溃
## Hello World! I crash!
import numpy as np
import matplotlib.pyplot as plt
x = np.ones(5)
plt.plot(x, x, label="$\bar{x}$ (but not really)")
plt.xlabel("$\bar{y}$ (but not really)") # I cause the crash
plt.show()
MWE2 - 不会崩溃
import numpy as np
import matplotlib.pyplot as plt
x = np.ones(5)
plt.plot(x, x, label="$\bar{x}$ (but not really)") # I still don't need prepended r
plt.xlabel(r"$\bar{y}$ (but not really)")
plt.show()
这样的比较不公平。 MWE2 get 中的情节标签从未使用过,因为没有图例;因此它不会引发任何错误。
一旦您使用 plt.legend()
生成此图例,它当然会导致与您期望的所有其他包含 MathText 命令且不是原始字符串的字符串相同类型的错误。
这会崩溃:
import numpy as np
import matplotlib.pyplot as plt
x = np.ones(5)
plt.plot(x, x, label="$\bar{x}$ (but not really)")
plt.xlabel(r"$\bar{y}$ (but not really)")
plt.legend()
plt.show()
结果:
ValueError:
$ar{x}$ (but not really)
^
Expected end of text, found '$' (at char 0), (line:1, col:1)
这不会崩溃,因为所有字符串都是原始字符串
import numpy as np
import matplotlib.pyplot as plt
x = np.ones(5)
plt.plot(x, x, label=r"$\bar{x}$ (but not really)")
plt.xlabel(r"$\bar{y}$ (but not really)")
plt.legend()
plt.show()
对于 matplotlib,您可以使用 tex 命令语法标记图例和轴标签。您应该 将 r 添加到字符串前:r"my tex label"。但我不明白的是为什么图例标签 不 关心 而 轴标签却关心
为什么轴标签的行为与图例标签不同(反之亦然)?
MWE1 - 崩溃
## Hello World! I crash!
import numpy as np
import matplotlib.pyplot as plt
x = np.ones(5)
plt.plot(x, x, label="$\bar{x}$ (but not really)")
plt.xlabel("$\bar{y}$ (but not really)") # I cause the crash
plt.show()
MWE2 - 不会崩溃
import numpy as np
import matplotlib.pyplot as plt
x = np.ones(5)
plt.plot(x, x, label="$\bar{x}$ (but not really)") # I still don't need prepended r
plt.xlabel(r"$\bar{y}$ (but not really)")
plt.show()
这样的比较不公平。 MWE2 get 中的情节标签从未使用过,因为没有图例;因此它不会引发任何错误。
一旦您使用 plt.legend()
生成此图例,它当然会导致与您期望的所有其他包含 MathText 命令且不是原始字符串的字符串相同类型的错误。
这会崩溃:
import numpy as np
import matplotlib.pyplot as plt
x = np.ones(5)
plt.plot(x, x, label="$\bar{x}$ (but not really)")
plt.xlabel(r"$\bar{y}$ (but not really)")
plt.legend()
plt.show()
结果:
ValueError:
$ar{x}$ (but not really)
^
Expected end of text, found '$' (at char 0), (line:1, col:1)
这不会崩溃,因为所有字符串都是原始字符串
import numpy as np
import matplotlib.pyplot as plt
x = np.ones(5)
plt.plot(x, x, label=r"$\bar{x}$ (but not really)")
plt.xlabel(r"$\bar{y}$ (but not really)")
plt.legend()
plt.show()