2015-09-25 70 views
-1

我嘗試下面的代碼繪製的圖形無法處理linspace正確

import numpy as np 

import matplotlib.pyplot as plt 

R=input('enter the rate of rainfall in mm/hr ') 


D=np.linspace(0.2,6,30) 


n=0.08 

l=41*pow(R,(-0.21)) 

N=n*exp(-l*D) 

plt.plot(D,N) 

我想開始在X軸點爲0.2和端點爲6.0,0.5區間,但什麼我得到的是起點0端點6間隔1!

任何人都可以告訴我我犯了什麼錯誤嗎? 感謝

+0

目前尚不清楚是什麼'的出發點0端點6間隔1'手段。也許包括一張圖片和解釋你想要改變什麼會有所幫助。 – cel

回答

0

我覺得你在這裏混淆的幾件事情:

首先,np.linspace(0.2,6,30)實際上給出了0.2的間距:

np.linspace(0.2,6,30) 
array([ 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8, 2. , 2.2, 
    2.4, 2.6, 2.8, 3. , 3.2, 3.4, 3.6, 3.8, 4. , 4.2, 4.4, 
    4.6, 4.8, 5. , 5.2, 5.4, 5.6, 5.8, 6. ]) 

如果你想在0.2和6之間的值與0.5間距,你需要使用np.arange

np.arange(0.2,6,0.5) 
array([ 0.2, 0.7, 1.2, 1.7, 2.2, 2.7, 3.2, 3.7, 4.2, 4.7, 5.2, 
    5.7]) 

但是,當你說你的,我的「起點終點0 6間隔1!」認爲你實際上是指圖上X軸的極限?您的代碼目前生產該圖: your code

您可以通過添加plt.xlim(0.2,6)更改您的代碼X軸限制爲0.2和6之間。但是,您的標籤仍然是從0到6,我們可以明確地強迫他們是你想要的方式:

import numpy as np 
import matplotlib.pyplot as plt 

R=input('enter the rate of rainfall in mm/hr ') 
#D=np.linspace(0.2,6,30) 
D = np.arange(0.2,6,0.5) 

n=0.08 
l=41*pow(R,(-0.21)) 
N=n*np.exp(-l*D) 

plt.plot(D,N) 
plt.xlim(0.2,6) 
plt.gca().set_xticks(D) # This 

plt.show() 

enter image description here

+0

非常感謝你,我剛開始使用ipython,它非常棒! –

+0

沒問題。如果你對我的回答感到滿意,你是否介意接受它(按下旁邊的勾號)?祝你好運學習! – areuexperienced