2016-08-31 39 views
0

我有一个情节我想创造一些代码:Pyplot移动起源与轴

import numpy as np 
import matplotlib.pyplot as plt 

# data 
X = np.linspace(-1, 3, num=50, endpoint=True) 
b = 2.0 
Y = X + b 

# plot stuff 
fig = plt.figure(figsize=(8,6)) 
ax = fig.add_subplot(1, 1, 1) 
ax.set_title('linear neuron') 

# move axes 
ax.spines['left'].set_position(('axes', 0.30)) 
# ax.spines['left'].set_smart_bounds(True) 
ax.yaxis.set_ticks_position('left') 

ax.spines['bottom'].set_position(('axes', 0.30)) 
# ax.spines['bottom'].set_smart_bounds(True) 
ax.xaxis.set_ticks_position('bottom') 

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

# title 
title = ax.set_title('Linear Neuron', y=1.10) 

# axis ticks 
# ax.set_xticklabels([0 if item == 0 else '' for item in X]) 
# ax.set_yticklabels([]) 
# for tick in ax.xaxis.get_majorticklabels(): 
# tick.set_horizontalalignment('left') 
# ax.tick_params(axis=u'both', which=u'both',length=0) 

# axis labels 
ax.xaxis.set_label_coords(1.04, 0.30 - 0.025) 
ax.yaxis.set_label_coords(0.30 - 0.03, 1.04) 
y_label = ax.set_ylabel('output') 
y_label.set_rotation(0) 
ax.set_xlabel('input') 

# ax.get_xaxis().set_visible(False) 
# ax.get_yaxis().set_visible(False) 

# grid 
ax.grid(True) 


ax.plot(X, Y, '-', linewidth=1.5) 

fig.tight_layout() 
fig.savefig('plot.pdf') 

在该图中的X和Y轴移动。但是,从蜱和蜱标中可以看出,起源并没有随之移动。

我该如何总是用x和y轴移动原点?

我想这应该和简单地看着情节的另一个区域一样,这样x轴和y轴就像平时一样在左下角而不是在角落里。

为直观:

current situation

我想要什么:

enter image description here

凡箭头指向x和y轴的交点,我想有起源,(0|0) 。如果虚线箭头指向上方,我希望线条向上移动,以便在原点移动时它仍然在数学上位于正确的位置。

(努力的最终结果可以发现here

+1

我不知道我明白你在问什么。请画出当前的输出和所需的输出 –

+0

@DizietAsahi图像有帮助吗? – Zelphir

回答

2

你已经做了很多,其中每个东西去手工调整的,所以解决的办法是不是很便携。但在这里,它是:删除您的原始代码的ax.spines['bottom'].set_positionax.xaxis.set_label_coords调用,并添加此相反:

ax.set_ylim(-1, 6) 
ax.spines['bottom'].set_position('zero') 
xlabel = ax.xaxis.get_label() 
lpos = xlabel.get_position() 
xlabel.set_position((1.04, lpos[1])) 

“引进起源起来”真的被刚刚ax.set_ylim完成,剩下的就是让你的标签,你要他们。

+0

啊哈!我想我明白!通过set_position('zero')设置位置,我告诉它放置x轴,其中零位于y轴上。它是否正确? – Zelphir