2017-03-19 13 views
0

matplotlib軸にテキストを書きたいと思います。このテキストには改行が含まれており、LaTexテキストレンダリングにアクセスできる必要があります。"r"接頭辞とmatplotlibの改行を含むPythonでの文字列連結

import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as mpl 

mpl.rc('font', family='sans-serif') 
mpl.rc('text', usetex=True) 

fig = mpl.figure() 
ax = fig.add_subplot(1,1,1) 

text = (r"This is the first line" 
     "\n" 
     r"And here comes the second one") 

ax.text(0.2,0.5,text) 

は、次の出力を生成します。

enter image description here

今、私は完全なテキストの異なる入力に関して柔軟だということを、このような2つの文を一緒にプラグインします。私はこれは、

UnicodeEncodeError: 'ascii' codec can't encode character '\u29f9' in position 300: ordinal not in range(128) 

さらにエラーが発生し、それはすべての新しい行の前にラテックスitemizeでのように箇条書きを入れることが可能である、しかし

text_1 = "This is the first line" 
text_2 = "And here comes the second one" 

completeText = [text_1, text_2] 

textIn = '⧹n'.join(map(str, completeText)) 

ax.text(0.2,0.5,textIn) 

のようなsomethinを考えていましたか?

答えて

2

'\n'を確認し、それが'⧹n'でないことを確認してください。

コードで'⧹n'を置き換えるために'\n'を使用しました。コードは正常に実行されていました。

違いは弾丸について\

は、これを試して、それは私のipythonのノートPC上で動作するということです。

%matplotlib inline # this line is for my ipython notebook,you don't need it 

import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as mpl 

mpl.rc('font', family='sans-serif') 
mpl.rc('text', usetex=True) 

fig = mpl.figure() 
ax = fig.add_subplot(1,1,1) 

text_1 = r"{\bullet}This is the first line" 
text_2 = r"{\bullet}And here comes the second one" 

completeText = [text_1, text_2] 

textIn = '\n'.join(map(str, completeText)) 

ax.text(0.2,0.5,textIn) 


fig.show() 
+0

今、私は仕事を始める前に眼鏡をかけておく必要がある日があります...ありがとう。 – Pat

+0

箇条書きのアイデアはありますか? – Pat

+0

@Pat行の前に '{\ bullet}'を追加すると便利です。また、行全体の前に 'r'を忘れないでください。私は自分の答えを改善しました。 – xiaoyi

関連する問題