【问题标题】:trying to plot a graph but comes back empty试图绘制图表但返回空白
【发布时间】:2021-12-16 03:12:09
【问题描述】:

您好,尝试绘制 while 循环的结果图,但一直返回一个空图并说存在值错误

  #create function f(n)
  def f(n):
if (n % 2)==0:
    return n/2
else:
    return (3*n+1)/2
  #loop funtion  
q=63
while q != 1:
q=f(q)

 #plot the function   
import numpy as np
import matplotlib.pyplot as plt

i=np.linspace(0,10,3)

plt.plot(q,i)
plt.show()

【问题讨论】:

  • 您确定这是一个空图而不是单点图吗?用plot(q, i, '+')检查它
  • 不是一个点,我不确定发生了什么
  • q 是单个值,i 不是。你应该用文字描述你想做什么,你对你的代码有什么期望,f 是什么以及为什么需要while [并正确格式化你的代码 -> 使用三重代码]

标签: python function graph valueerror


【解决方案1】:

正确缩进代码可能会有所帮助,因为它更容易解释:)

出现值错误的原因是 x 和 y 值的维度不同。对于 x,您传递了一个大小为 1 的变量,对于 y,您传递了一个大小为 3 的数组。此外,在使用 matplotlib 的绘图函数时,建议指定绘图函数的属性,以确定您想要的绘图类型(否则它可以输出一个空图)。我在下面的修改后的代码中输入了示例值。

希望这有助于您实现绘制函数的主要目标!

import numpy as np
import matplotlib.pyplot as plt 
def f(n):

  if (n % 2)==0:
     return n/2
  else:
     return (3*n+1)/2
  #loop function  
q=63
while (q != 1):
   q=f(q)

 #plot the function   
i=np.linspace(0,10,3)

#Here i is an array of type float of size 3, so you need to pick one of the
#values in i to plot with the value of q(which is a float variable of size 1)
plt.plot(q, i[2], color='green', marker='o')        
plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-10
    • 2021-01-26
    • 1970-01-01
    • 2015-10-28
    • 2014-03-27
    • 2012-06-03
    相关资源
    最近更新 更多