如何使用Matplotlib将中心轴放在所有图像绘图周围?

时间:2014-01-26 10:59:24

标签: python matplotlib

我正在为学生绘制函数,所以我在图像的中心绘制了轴。但是当我绘制像x-ceil(x)这样的函数时,y轴只显示[-1,1]而我想显示[-6,6],尽管没有图函数。 代码

#/usr/bin/env python3
# -*- coding: utf-8 -*-

import numpy as np
import matplotlib.pyplot as plt


fig, ax = plt.subplots()
x = np.linspace(-6.0, 6.0, 1000)
pos = np.where(np.abs(np.diff(np.ceil(x))) == 1.0)[0] + 1
x = np.insert(x, pos, np.nan)
ax.axis([x[0] - 0.5, x[-1] + 0.5, x[0] - 0.5, x[-1] + 0.5])
ax.spines['left'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('center')
ax.spines['top'].set_color('none')
ax.spines['left'].set_smart_bounds(True)
ax.spines['bottom'].set_smart_bounds(True)
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ticks = []
for i in range(int(x[0]), int(x[-1] + 1), 1):
    ticks.append(i)
ticks.remove(0)
ax.set_xticks(ticks)
ax.set_yticks(ticks)
ax.plot(x, x - np.ceil(x), color='b', linestyle='-', lw=2.0)
igual = np.arange(-5, 7, 1)
igual2 = np.arange(-6, 6, 1)
ax.plot(igual, np.zeros(12, np.int), 'bo', markeredgecolor='b', markerfacecolor='b',
        lw=2.0,  label='_nolegend_')
ax.plot(igual2, -1 * np.ones(12, np.int), 'bo', markeredgecolor='b', markerfacecolor='w',
        lw=2.0,  label='_nolegend_')
ax.legend([r'$f(x)=x-\lceil x \rceil$'], loc='lower right')
ax.annotate(r'$OX$', xy=(x[-1] - .5, 0.25), size=16, color='black')
ax.annotate(r'$OY$', xy=(0.25, x[-1]), size=16, color='black')
ax.set_title(r'$Funci\'on\; f(x)=x-\lceil x \rceil$', fontsize=18)
ax.grid('on')
plt.show()

这是一张图片: Y axis 我已经尝试了官方matplotlib doc(图像,紧,自动......)中的所有ax.axis选项,但没有。

由于

1 个答案:

答案 0 :(得分:1)

删除set_smart_bounds(True)的{​​{1}}有效。

更改

ax.spines['left']
于:
ax.spines['left'].set_smart_bounds(True)