Python int()参数必须是字符串、类似字节的对象或数字,而不是';列表';

Python int()参数必须是字符串、类似字节的对象或数字,而不是';列表';,python,matplotlib,graph,Python,Matplotlib,Graph,我试图在Python中使用matplotlib.pyplot绘制图形,但出现错误: int()参数必须是字符串、类似字节的对象或数字,而不是 “列表” 在倒数第二行 代码如下: 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 =

我试图在Python中使用
matplotlib.pyplot
绘制图形,但出现错误:

int()参数必须是字符串、类似字节的对象或数字,而不是 “列表”

在倒数第二行

代码如下:

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\u number)
,这三个选项都是整数


Matplotlib试图将
f
d
列表转换为整数类型,但失败了。

只是几个小问题。您必须使用
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()

这将处理语法错误。使用一个子图可以处理一个图,但您不需要它,所以我不知道这是什么类型的逻辑错误(您想要两个图吗?

在最后一行plt.subplot(f,d,'bo')正如所说的,您必须为
plt.subplot
传入一些可以转换为int的内容。由于f和d都是列表,因此会导致错误。尝试迭代
zip(f,d)
并将每个元素作为参数传递。我没有得到您的答案。您可以编辑您在此处所说的代码吗?不需要,@BlivetWidget的答案更好地解决了问题。然后我将如何做?从列表中提供有效的参数,如
f[0]
d[0]
,如果您想要这些列表的第一个元素。从您的代码中不清楚您希望子地块是什么样子,因此我无法提供完整的示例。@YogeshYadav,当然可以。尽管在本例中它导致了一个错误,但对于您使用“导入为”范例,我们感到非常荣幸。太多人将所有内容导入全局命名空间。