[英]Matplotlib displaying axes but not datapoints
我正在尝试使用以下代码绘制速度曲线。 绘制了轴,但未绘制数据点。
import pandas as pd
from matplotlib import pyplot as plt
n = 0.4
k = 53
d = 0.000264
r = 0.000132
p = 15000
u = (n/n+1)*(p*1/2*k)**(1/n)*(d**((n+1)/n) - r**((n+1)/n))
plt.plot(u)
产生的图表:
首先,请注意(p*1/2*k)
是一种非常令人困惑的乘法方式。 在(几乎所有)编程语言中,乘法和除法是从左到右进行的,因此, (p*1/2*k)
等于(p*k/2)
而您的意思可能是(p/(2*k))
.
绘制 2D 图时,您必须考虑在x
方向上想要什么,在y
方向上想要什么。 因为你只给出一个x
,所以没有什么可绘制的。 此外, plot
默认要绘制线条,并且对于一条线,至少需要 2 对 xy 对。 为了只画一个点, plot 接受第三个参数,例如 'ro' 代表一个红点。 假设u
是y
方向,而你没有x
,你可以给它一个零:
plt.plot(0, u, 'ro')
现在,您可能想为某些x
不同值绘制u
曲线。 因为在你的方程中没有x
也没有t
,我很难知道你想在水平方向上看到什么。
假设您想将u
显示为d
的函数,并且d
从0.0
到0.0005
。 通常,使用 numpy 为d
创建一系列值,假设分成 200 个小区间: d = np.linspace(0.0, 0.0005, 200)
。 然后,有numpy的魔法,当你写u = f(d)
,numpy 为u
制作一个数组,其中包含与d
一样多的条目。
例子:
import numpy as np
from matplotlib import pyplot as plt
n = 0.4
k = 53
d = np.linspace(0.0, 0.0005, 200) # 0.000264
r = 0.000132
p = 15000
u = (n / n + 1) * (p * 1 / 2 * k) ** (1 / n) * (d ** ((n + 1) / n) - r ** ((n + 1) / n))
plt.plot(d, u)
plt.show()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.