简单&复杂的Python兴趣; “x和y必须具有相同的第一个尺寸”

时间:2016-12-19 15:07:04

标签: python matplotlib

所以我试图生成一个图表,展示简单和复合兴趣之间的区别。我遇到的问题是我得到一个错误:“x和y必须具有相同的第一维”。我在这里看起来似乎有类似的问题,但是我很难将这些解决方案转移到我的实际问题上。我查看了t和fv_2和fv_3的大小/长度以及尺寸都匹配; fv_1只是一条直线(见代码)。

如果有人知道我哪里出错了,建议,建议将不胜感激!

import numpy as np
import matplotlib.pylab as plt


pv=1000
r=0.08
n=10

t=np.linspace(0,n,n)
fv_1=np.ones(len(t)*pv) #horizontal line 
fv_2=pv*(1+r*t) #simple interest
fv_3=pv*pow(1+r,t) #compounded interest


plt.title("Simple vs. Compounded Interest Rate")
plt.xlabel("Number of Years, t")
plt.ylabel("Pounds Sterling, £")
plt.xlim(0,11)
plt.ylim(800,2200)
plt.plot(t,fv_1,'b-')
plt.plot(t,fv_2,'g--')
plt.plot(t,fv_3,'r-')
plt.show()

3 个答案:

答案 0 :(得分:0)

尝试做:

fv_1=np.ones(len(t))*pv

说明:您的代码在错误的位置有)。在您的示例中,fv_1中的元素数量不等于t中的元素数量。您最有可能需要len(t)个数量为pv的元素。

答案 1 :(得分:0)

fv_1的大小为1000,t的大小为10

错误在于:plt.plot(t,fv_1,'b-')

print len(t)
print len(fv_1)
print len(fv_2)
print len(fv_3)

输出:

10
10000
10
10

修复此

np.ones(len(t))*pv

答案 2 :(得分:0)

所以我接受了你的建议并写了

fv_1=np.ones(len(t))*pv.

产生了这个错误:"只有长度为1的数组才能转换为Python标量"

摆脱:

fv_3=pv*pow((1+r),t)

并将其替换为等效的:

fv_3=pv*(1+r)**t

一般生成正确的曲线和图。

再次感谢@Roberto Mena& @yper