我想用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)
发布于 2018-06-08 06:49:43
尝尝这个
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)
https://stackoverflow.com/questions/50746748
复制相似问题