matplotlib x和y必须大小相同错误python [已关闭]

pnwntuvh  于 2022-12-04  发布在  Python
关注(0)|答案(2)|浏览(111)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
2天前关闭。
Improve this question
这就是我需要找到错误的地方(。制作Nsteps与起始数字的散点图。您应该调整标记符号和大小,以便您可以识别数据中的模式,而不仅仅是看到大量的点。)

基本上这是我的代码:
#位于[]

import numpy as np 
import matplotlib.pyplot as plt

def collatz(N):
   iteration=0 
   listNumbers=[N]

    while N != 1:
         iteration += 1
         if (N%2) == 0:
              N = N/2
         else:
              N= (N*3) + 1
   

     print(i,'number of interactions',iteration)
     print(listNumbers)
     return iteration

N= int(input(' enter a number:'))

iteration=collatz(N)

#输出[]

enter a number:7
10000 number of interactions 16
[7]

#位于[]

s=np.array([])
for i in range(1,10001,1):
    K=collatz(i)
    s=np.append(s,K)
print(s)

#out(太大,无法粘贴到此处,但我将前10行粘贴到此处)
#位于[]

plt.figure() 
plt.scatter(range(1,100001,1),s) #gives me the x and y must be the same size error here plt.xlabel('number of interations')
 plt.ylabel('numbes') 
plt.ylim(0,355) 
plt.xlim(0,100000)
plt.show()

 #Make a scatter plot of Nsteps versus starting number. You should adjust your marker symbol
and size such that you can discern patterns in the data, rather than just seeing a solid mass of
points.
ccgok5k5

ccgok5k51#

试试看:

plt.scatter(np.arange(s.size), s)

这将根据数组的实际大小设置x值的范围。

w3nuxt5m

w3nuxt5m2#

该错误表示range(1,100001,1)s的长度不同。请尝试

print(len(range(1,100001,1)))
print(len(s))

确认。你需要有相同数量的x坐标和y坐标。使它们大小相同,它就可以工作。
从你的问题/代码中,我不清楚你实际上试图策划什么,但我刚刚描述的是问题的根源。

相关问题