【问题标题】:Matplotlib not giving the correct graph of a function [duplicate]Matplotlib没有给出正确的函数图[重复]
【发布时间】:2021-10-07 10:03:45
【问题描述】:

我使用matplotlib.pyplot as pltplt.plot(t_test, vel) 得到的函数v(t) 的图表并没有给我它应该得到的东西。这是完整的代码和结果图:

import numpy as np
import matplotlib.pyplot as plt

t_test = np.linspace(0,1,200)

def v(t):
    return 1500*(350/2000000) - (350/2000000)*np.log(1-0.00625*t)

vel = v(t_test)

print(vel)
plt.plot(t_test, vel)
plt.show()

由于t_test 的值介于 0 和 1 之间,因此我们肯定会看到看似线性的图表,因此我们只看到图表的一小部分。然而,我的问题是,图表显示的是v(0) = 0,而实际上是v(0) = 0.2625。为什么会出现这种差异?

【问题讨论】:

  • scaley=False 添加到您的plot 通话中,您将获得几乎直线。

标签: python function matplotlib


【解决方案1】:

事实上,在我看来你有一个正确的答案,但我认为你没有意识到 y 尺度。如果您看到 Y 轴的顶部,则为 1e-6+2.6250000000e-1,这意味着您在 Y 轴上的值必须乘以 1e-6(即 10^-6)和总和 2.6250000000 e-1(即 0.2625)。所以,v(0)=0*(10^-6) + 0.2625 =0.2625。

【讨论】:

  • 我相信你,但它为什么要这样做呢?作为默认操作,这有什么意义?
  • 好的,如果你在plot 调用中添加scaley=False,那么你会得到你期望的结果。很好的分析——我没有抓住这个。
  • @TimRoberts matplotlib 更喜欢在计算的刻度标签的前 6 位数字相等时显示偏移文本。
  • 我不太确定它为什么会这样做。但幸运的是,我们都明白他为什么会得到他认为错误的答案,并且您给了他一个解决方案。
  • @JohanC 这是一个很好的理由。谢谢
猜你喜欢
  • 2020-05-06
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
  • 2020-06-12
  • 1970-01-01
  • 1970-01-01
  • 2023-01-22
  • 2015-11-10
相关资源
最近更新 更多