2016-08-31 40 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