如何考虑txt文件中的x值来绘制阶梯函数图

时间:2018-06-07 17:07:57

标签: python matplotlib

我想使用来自txt文件的值来创建一个阶梯函数图,以运行将生成图的方程。

问题是,当我运行脚本时,绘图不是从0开始的步进函数 - > 0.110,和0.110到0.143,和0.143到1.它从0到0 0,0至0.11,0.11至0.143。所以,基本上,它只绘制基于x0的步长函数,不包括x1。阶梯函数应该看起来像x0 - > x1,例如,0-> 0.110,0.110-> 0。 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)

1 个答案:

答案 0 :(得分:0)

试试这个

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)

enter image description here