双线换行失败,使用matplotlib和xkcd样式

时间:2013-12-17 14:50:05

标签: python numpy matplotlib plot

以下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

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)