2017-03-29 16 views
1

4分の3のプロットを生成しようとしています。しかし、テキストをラップしようとすると、テキストの制限を設定する方法がわかりません。たとえば、添付の図では、テキストを x = 0に制限します。しかし、それはx軸の限界の終わりまで進んでいます。コードとコードが生成している対応するプロットを添付してください。Matplotlib - テキストの折り返しの制限を設定します

import matplotlib 
%matplotlib inline 
import matplotlib.pyplot as plt 

import numpy as np 
from textwrap import wrap 

font = {'size': 22} 
matplotlib.rc('font', **font) 
fig = plt.figure(figsize=(8, 8)) 
plt.axis([-10, 10, -10, 10]) 

ax = plt.gca() 

ax.spines['left'].set_position('center') 
ax.spines['bottom'].set_position('center') 

ax.spines['right'].set_visible(False) 
ax.spines['top'].set_visible(False) 

plt.xlabel('Energy ($kWh$)') 
ax.xaxis.set_label_coords(0.85, .48) 
ax.xaxis.set_ticks_position('bottom') 
ax.set_xlim(-10, 10) 
ax.xaxis.set_ticks([]) 

plt.ylabel('Discomfort ($\%$)', rotation=0) 
ax.yaxis.set_label_coords(0.7, 0.01) 
ax.yaxis.set_ticks_position('left') 
ax.set_ylim(-10, 10) 
ax.yaxis.set_ticks([]) 

ax.annotate(
    'Reference Point', xy=(0, 0), xycoords='data', 
    xytext=(-10, 2), textcoords='data', wrap=True, 
    arrowprops=dict(facecolor='black')) 

t = "This is a really long string that I'd rather have wrapped so that 
it doesn't go outside of the figure, but if it's long enough it will go 
off the top or bottom!" 

ax.text(-10, 3.5, t, ha='left', wrap=True, fontsize=20) 
plt.tight_layout() 
plt.savefig('sample.png') 

Text should be limited to x=0

答えて

1

auto wrap demoに見られるように、ラッピングは、図限界で起こります。これはあまり快適ではありませんが、多くのケースを想像することができますが、これはまったく役に立ちません。ここでは、正しい配置を選択してテキストを折り返すことができます。

ax.text(0.49, 0.98, t, ha='right',va="top", wrap=True, 
     fontsize=20, transform=ax.transAxes) 
ax.text(0.51, 0.98, t, ha='left',va="top", wrap=True, 
     fontsize=20, transform=ax.transAxes) 
ax.text(0.49, 0.49, t, ha='right',va="top", wrap=True, 
     fontsize=20, transform=ax.transAxes) 

enter image description here

+0

我々は、テキストセンターはすべての四半期に整列または正当化することはできますか? –

+0

multiline = 'center'は仕事をしました。あなたの迅速な対応に感謝。 –

関連する問題