私は、グラフのすべての終点(曲線の最大値)を通り、csvファイルからプロットされた線分を描きたいと思います。この線分については、曲線上の1点(既知)を基準としてこの線分に平行な線を描く必要があります。ポイントを結んで線分を描き、平行線w.r.tを作る方法。線分?
z, x, y
-40,0,0
-40,0.658,26.443
-40,1.316,47.128
-40,1.974,62.084
-40,2.632,73.336
-40,3.29,81.785
-40,3.948,87.501
-40,4.606,90.795
-40,5.264,92.491
-40,5.922,93.231
-40,6.58,93.41 - maximum value i.e end point of the curve
23,0,0
23,0.889,22.616
23,1.778,36.552
23,2.667,45.238
23,3.556,50.666
23,4.445,53.856
23,5.334,55.673
23,6.223,56.672
23,7.112,57.203
23,8.001,57.443
23,8.89,57.51- maximum value i.e end point of the curve
40,0,0
40,0.937,19.191
40,1.874,30.893
40,2.811,38.58
40,3.748,43.547
40,4.685,46.518
40,5.622,48.238
40,6.559,49.193
40,7.496,49.694
40,8.433,49.935
40,9.37,50.02- maximum value i.e end point of the curve
上記は私がプロットする必要があるCSVファイルであり、終点は暗示されています。私はすべての終点をas in the imageという行でPandas関数を使って接続する必要があり、これを行うために以下のコードを試しました。例えば、平行線は任意の曲線上の単一点をとる。これは描画される線を指し、最初の線と平行でなければなりません。
import csv
from tkinter import filedialog
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import style
from mpldatacursor import datacursor
x=[] # Initializing empty lists to store the 3 columns in csv
y=[]
z=[]
df = pd.DataFrame({'A' : []})
def readCSV(e):
global df
filename = filedialog.askopenfilename()
df = pd.read_csv(filename, error_bad_lines=False) #Reading CSV file using pandas
read = csv.reader(df, delimiter = ",")
fig = plt.figure()
data_list = []
ax= fig.add_subplot(111)
df.set_index('x', inplace=True) #Setting index
df.groupby('z')['y'].plot(legend=True,ax=ax) #grouping and plotting
for line in ax.lines:
xdata = line.get_xdata()
ydata = line.get_ydata()
s = line.append([6.58,8.89,9.37])
r = line.append([93.41,57.51,50.02])
ax.plot(s,r)
ax.set_ylabel('y')
ax.set_xlabel('x')
ax.grid(True)
plt.show()
あなたをオフに開始するには - あなたがすることができますプロットした各行の最後の座標を取得します。 'for ax.lines:'、 'line.get_xdata()'のようにします。 yデータに対して繰り返し、これらの最後の値を新しいリストに追加します。これをプロットすると、既存の線の終わりを結ぶ直線が得られます – DavidG
編集したプログラムを確認してください。それは正しい方法ですか? – Santo