我使用标准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)
导致以下图表
我试图弄清楚为什么pi / 2和-pi / 2的乳胶刻度标签与x轴相交,但我在Google,SO或matplotlib文档中找不到任何内容。这可能是一个错误吗?我在OSX Mountain Lion,Python 2.7.6,matplotlib 1.3.1,ipython 2.1.0。
答案 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)
结果在正确的数字