乳胶滴答标签重叠轴在matplotlib生成的图形中

时间:2014-07-28 14:22:27

标签: matplotlib

我使用标准beginner's matplotlib tutorial中的以下代码。

from pylab import *

figure(figsize=(10, 6), dpi=80)
subplot(1,1,1)

X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.cos(X), np.sin(X)

plot(X, C, color="blue", linewidth=2.5, linestyle="-",
     label=r'Cosine')
plot(X, S, color="red", linewidth=2.5, linestyle="-",
     label=r"Sine")

xlim(X.min()*1.1, X.max()*1.1)
ylim(C.min()*1.1, C.max()*1.1)

ax = gca()
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position('center')

ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))

ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
   [r'$-\pi$', r'$-\frac{\pi}{2}$',r'$0$', r'$\frac{\pi}{2}$',r'$+\pi$'])
yticks([-1, +1])

legend(loc='upper left')

for label in ax.get_xticklabels() + ax.get_yticklabels():
    label.set_fontsize(20)
    label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.65))

show(block=False)

导致以下图表

matplotlib result

我试图弄清楚为什么pi / 2和-pi / 2的乳胶刻度标签与x轴相交,但我在Google,SO或matplotlib文档中找不到任何内容。这可能是一个错误吗?我在OSX Mountain Lion,Python 2.7.6,matplotlib 1.3.1,ipython 2.1.0。

1 个答案:

答案 0 :(得分:1)

感谢@Schorsch的评论,我能够缩小问题的范围。它与我用Homebrew安装的两个版本的libpng不兼容。

$brew info libpng 

libpng: stable 1.6.12 (bottled)
http://www.libpng.org/pub/png/libpng.html
/usr/local/Cellar/libpng/1.5.17 (15 files, 1.3M)
Built from source with: --universal
/usr/local/Cellar/libpng/1.6.12 (17 files, 1.3M) *

当我用

安装matplotlib时
pip install matplotlib

它使用了libpng 1.5.17,但在运行ipython --pylab时它使用的是1.6.12。为了强制pip使用适当版本的libpng,我使用了以下shell变量。

export LDFLAGS="-L/usr/local/Cellar/libpng/1.6.12/lib/ -L/usr/X11/lib"
export CFLAGS="-I/usr/local/Cellar/libpng/1.6.12/include/ -I/usr/X11/include -I/usr/X11/include/freetype2"

然后重新安装matplot lib

pip install --upgrade --force-reinstall matplotlib

然后确保使用乳胶渲染

from matplotlib import rc
rc('text', usetex=True)

结果在正确的数字

fixed matplotlib figure