2015-09-25 74 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