Matplotlib中使用'%'作为绘图标签时遇到的问题

3
我正在尝试创建一个子图,显示具有“MPa”和“%”单位的不同参数'a'和'b'。在此示例中,我使用了包含有关单位信息的单独数据框架。原因是数据框架来自数据库。
似乎对于参数“b”,我始终会收到以下错误: ValueError:1 b:($ $$) ^预期文本结束(在第1行,第10列),(行:1,列:10)
以下是代码:
import pandas as pd
import matplotlib.pyplot as plt

#Random Data
units = pd.DataFrame([['a', 'MPa'], ['b', '%']], index = [0,1], columns = ['Type', 'Unit'])
data = pd.DataFrame({'Val':[20,30,50,70,80,90,20,10,15,99,58],
                     'Depth':[10,20,30,40,10,20,30,40,50,100,110],
                     'Type':['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b','b']})

#Plot Data
fig, (ax1, ax2) = plt.subplots(1,2)
ax1_unit = units.loc[units['Type'] == 'a', 'Unit']
ax2_unit = units.loc[units['Type'] == 'b', 'Unit']

ax1.plot(data.loc[data['Type'] == 'a', 'Val'],
         data.loc[data['Type'] == 'a', 'Depth'])

ax1.set_xlabel('a: ($' + ax1_unit + '$)')

ax2.plot(data.loc[data['Type'] == 'b', 'Val'],
         data.loc[data['Type'] == 'b', 'Depth'])

ax2.set_xlabel('b: ($' + ax2_unit + '$)')

fig.show()

我认为这与“%”是一个预留字符有关。我尝试了一些地方建议的用“%%”和甚至“%%%”来替换它,但都不起作用。


你的意思是 f.show() 而不是 fig.show(),对吗? - Cleared
@已解决。我修复了 :-) - Mad Physicist
1个回答

2

使用

%

进行百分号的转义。

'\%'

可以尝试使用instead替代。这样应该可以解决问题。


奇怪的是,我之前尝试过这个,但没能成功,但现在却成功了!谢谢。。 - BillyJo_rambler
@MattyT。如果您的图表启用了 TeX 模式,则必须使用转义符,因为在 TeX 中 % 有特定意义。如果 matplotlib.rcParams['text.usetex'] 等于 False,则不需要使用转义符。您可能在不知不觉中启用了该模式。 - Mad Physicist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接