2017-05-12 7 views
2

それぞれ 'MPa'と '%'の単位を持つ異なるパラメータ 'a'と 'b'を示すサブプロットを作成しようとしています。この例では、ユニットに関する情報を含む別のデータフレームを使用しています。これは、データフレームがデータベースから供給されているためです。私は「B」パラメータに次のエラーを取得しておくように見えるMatplotlibのプロットラベルに '%'を使用する際の問題

次のように

ValueError: 1 b: ($%%$) ^Expected end of text (at char 9), (line:1, col: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() 

私は「%」のことを行うにはその何かを考えます予約された文字。私は '%%'、さらには '%%%'で置き換えようとしましたが、これはうまく動作しませんでした。

+0

あなたは 'fig.show()'ではなく 'f.show()'を意味します、そうですか? – Cleared

+0

@Cleared。私はそれを修正しました:-) –

答えて

2
代わり

'\%' 

とパーセント記号をエスケープ

。それはうまくいくはずです。

+0

奇妙なことに、これを前に試してみましたが、うまくいきませんでした。ありがとう.. –

+0

@MattyT。エスケープは、TeXモードで '% 'が意味を持つので、あなたのプロットに対してTeXモードが有効になっている場合にのみ必要です。 'matplotlib.rcParams ['text.usetex']'が 'False'の場合、エスケープは必要ありません。実現することなく、いつでも有効にしておく必要があります。 –

関連する問題