无法正确处理linspace

时间:2015-09-25 14:07:17

标签: python numpy matplotlib

我尝试使用以下代码绘制图表

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!

任何人都可以告诉我我在哪里弄错了吗? 感谢

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

请参阅np.arange以设置轴的参数。

import numpy as np
import matplotlib.pyplot as plt

# evenly sampled time at 200ms intervals
t = np.arange(0., 5., 0.2)

http://matplotlib.org/users/pyplot_tutorial.html