首页 > 解决方案 > 如何考虑 txt 文件中的 x 值来绘制阶跃函数图

问题描述

我想使用 txt 文件中的值制作一个阶梯函数图,以运行将生成图的方程。

问题是,当我运行脚本时,绘图不是从 0 -> 0.110、0.110 到 0.143、0.143 到 1 的阶跃函数。它从 0 到 0、0 到 0.11、0.11 到 0.143。所以,基本上,它只绘制基于 x0 的阶跃函数,不包括 x1。阶跃函数应该看起来像 x0 -> x1,例如,0 ->0.110, 0.110 -> 0.143, 0.143 -> 1。

有什么方法可以更改 x=df.['x0'] 以便它还包含 x1 值?如果可能的话,我想保持我的代码不变,而不用改变整个脚本。

我的 txt 文件看起来像

      x0     x1        y0        y1
   0.000  0.110 -0.000050 -0.046207
   0.110  0.143 -0.046206 -0.049596
   0.143  1.000 -0.049596  0.000000

我想使用的方程式是

1. (((y1-yo)/(x1-x0)*(1-x0))+y0)
2. (-u + K/2)/e

下面是我的脚本

import numpy as np
import matplotlib.pyplot as plt 
import csv

import pandas as pd

x=[]
y=[]
K=-2.69028905
e=1

df = pd.read_csv('vol_values.txt', delim_whitespace=True)
print(df)
df['u'] = df.apply(lambda row: (((row.y1-row.y0)/(row.x1-row.x0)*(1-row.x0))+row.y0 ) , axis=1)
df['V'] = df.apply(lambda row: -row.u + K/2, axis=1)
df
print(df)
x=df['x0']
x1=df['x1']
y=df['V']
plt.step(x,y)

标签: pythonmatplotlib

解决方案


尝试这个

print(df[['x0', 'x1', 'V']])

x0     x1         V
0  0.000  0.110 -0.925485
1  0.110  0.143 -1.207511
2  0.143  1.000 -1.345145

x = [df.x0.iloc[0]] + df.x1.tolist()
# [0.0, 0.11, 0.143000, 1.0]

y = [df.V.iloc[0]] + df.V.tolist()
# [-0.9254854, -0.9254854, -1.207511, -1.34514]

plt.step(x, y)

在此处输入图像描述


推荐阅读