以下python3代码不起作用,因为第9行中的 double 换行符:
# -*- coding: utf-8 -*-
from matplotlib import pyplot as plt
import numpy as np
plt.xkcd()
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
plt.text(4, 400, '-> 1 Pig ~ 150 kg\n\n-> Butching => 80 to 100 kg meat')
plt.axis([0, 7, 0, 2000])
plt.plot([0,1,2,3,4,5], [0,400,800,1200,1600, 2000])
ax.set_ylim([0, 2000])
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
plt.show()
但是如果删除plt.xkcd()
行,那么即使使用双行换行,一切也能正常工作。
现在有人为什么?
这是一个错误还是有任何解决方法?
我的设置: Windows 7 amd64, python 3.3, numpy 1.8, matplotlib 1.3.1
答案 0 :(得分:1)
两个黑客来解决这个问题:
用“\ n。\ n”替换双换行符(即添加一个小点)
plt.text(4, 400, '-> 1 Pig ~ 150 kg\n.\n-> Butching => 80 to 100 kg meat')
将多行文字拆分为多个文本调用(最佳结果)
plt.text(4, 400, '-> 1 Pig ~ 150 kg')
plt.text(4, 240, '-> Butching => 80 to 100 kg meat')
或者
text = '-> 1 Pig ~ 150 kg\n\n-> Butching => 80 to 100 kg meat'
for il, l in enumerate(text.split('\n')):
plt.text(4, 400-80*il, l)