繁体   English   中英

Matplotlib 显示轴但不显示数据点

[英]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' 代表一个红点。 假设uy方向,而你没有x ,你可以给它一个零:

plt.plot(0, u, 'ro')

现在,您可能想为某些x不同值绘制u曲线。 因为在你的方程中没有x也没有t ,我很难知道你想在水平方向上看到什么。

假设您想将u显示为d的函数,并且d0.00.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM