int()函数的参数必须是一个字符串,一类字节对象,数字,而不是“名单”
我试图绘制使用Python中matplotlib.pyplot
一个图形,但得到一个错误:int()函数的参数必须是一个字符串,一类字节对象,数字,而不是“名单”
int() argument must be a string, a bytes-like object or a number, not 'list'
在倒数第二行。
下面是代码:
import numpy as np
import random
import matplotlib.pyplot as plt
#constants
mUn0 = 1350
Vcat = 18000000
n = 2 * pow(10,16)
e = 1.6 * pow(10,-19)
#variable
E = 1000
d = []
f = []
for i in range(1,E):
j = log(n*e*mUn0) + log(i) - 0.5 * log(1+pow((mUn0*i/Vcat),2))
f.append(j)
d.append(log(i))
plt.xlabel('E')
plt.ylabel('V')
plt.subplot(2,1,2)
plt.subplot(f,d,'bo')
plt.show()
谢谢
pyplot.subplot()
需要subplot(nrows, ncols, plot_number)
,所有三个选项都是整数。
Matplotlib正试图将您的f
和d
列表转换为整数类型并失败。
那么如果你想要这些列表的第一个元素,我将如何做到这一点 –
从列表中提供有效的参数,如'f [0]'和'd [0]'。从你的代码中不清楚你想要这个子图是什么样的,所以我不能提供一个完整的例子。 – economy
只是一些小问题。您必须使用plt.plot()
进行绘图,并且您不能只使用log
,您需要np.log()
或导入math
模块,然后使用math.log()
。我注意到我#FIXED
import numpy as np
import random
import matplotlib.pyplot as plt
#constants
mUn0 = 1350
Vcat = 18000000
n = 2 * pow(10,16)
e = 1.6 * pow(10,-19)
#variable
E = 1000
d = []
f = []
for i in range(1,E):
j = np.log(n*e*mUn0) + np.log(i) - 0.5 * np.log(1+pow((mUn0*i/Vcat),2)) #FIXED
f.append(j)
d.append(np.log(i)) #FIXED
plt.xlabel('E')
plt.ylabel('V')
plt.subplot(2,1,2) #not needed, but maybe a holdover from full code
plt.plot(f,d,'bo') #FIXED
plt.show()
这需要语法错误护理改线。使用子图与一个绘图一起工作,但您不需要它,所以我不知道是哪种类型的逻辑错误(是否需要两个绘图?)
非常感谢你的工作 –
@YogeshYadav你打赌。尽管在这种情况下导致了一个错误,但对于使用'导入为'范例的主要赞誉。太多人将所有内容都导入到全局名称空间中。 – BlivetWidget
第二个最后一行 plt.subplot(f, d,'bo') –
就像说的那样,你必须传入一些可以转换为'plt.subplot'的int的东西。因为'f和d'都是列表,它会导致错误。尝试通过'zip(f,d)'迭代并传递每个元素作为参数 –
我没有得到你的答案你可以只编辑你在这里说的代码 –