현재 X 축을 따라 곡선을 통과하는 대화 형 시간 추적 선을 만들기 위해 노력하고 있습니다.Pyqtgraph에서 대화 형 시간 추적기 플로팅
문제 :하기 matplotlib에서 애니메이션을 사용하여 해당 코드를 할 수 있었다,하지만 라인 이동을 할 수 있었다 (즉, 그것이 상호 작용하지 않습니다).
import numpy as np
import csv
import csv_splitter
import matplotlib
import matplotlib.pyplot as plt
from matplotlib import animation
import matplotlib.colors as cm
from scipy import interpolate
from scipy import ndimage
from PIL import Image
import cv2
import os
plt.rcParams['animation.ffmpeg_path'] = unicode ('C:/FFMPEG/bin/ffmpeg.exe')
with open('C:/Users/jkspu/Desktop/Force.csv','r') as input, open('C:/Users/jkspu/Desktop/Op.csv', 'w') as output:
try:
read = csv.reader(input)
for r in read:
non_blank = (line for line in input if line.strip())
for i in range(17):
next(read)
output.writelines(non_blank)
finally:
print("Done!")
data_orig = np.genfromtxt('C:/Users/jkspu/Desktop/Op.csv', dtype =int, delimiter = ",")
fig = plt.figure()
X = data_orig[412:524,1]
Y1 = data_orig[412:524,4]
Y2 = data_orig[412:524,3]
Y3 = data_orig[412:524,2]
plt.plot(X, Y1, 'r--', X, Y2, 'b--', X, Y3, 'g--')
plt.xlabel('Time -----> (ms)')
plt.ylabel('Force Data -----> (N)')
X_MIN = 2055
X_MAX = 2615
Y_MIN = -300
Y_MAX = 1500
X_VALS = range(X_MIN, X_MAX+1);
def update_line(num, line):
i = X_VALS[num]
line.set_data([i, i], [Y_MIN, Y_MAX])
return line,
l , v = plt.plot(2055, -200, 2615, 1200, linewidth=2, color= 'gold')
anim = animation.FuncAnimation(fig, update_line, len(X_VALS), fargs=(l,), interval=15, blit=True, repeat=False)
print(update_line)
FFwriter = animation.FFMpegWriter(fps=30, extra_args=['-vcodec', 'libx264'])
anim.save('basic_animation.mp4', writer = FFwriter)
plt.show()
목표 : 나뿐만 아니라 그것을 이동으로 대화 시간 추적 선을 만들기 위해 관심을 가질만한 (애니메이션 남아있다). 이를 위해 필자는 Pyqtgraph (대화식 솔루션을 찾기를 희망 함)를 사용하려고합니다.
내가 사용한 코드는이 (하지만이 코드에서하기 matplotlib 애니메이션에 연결하는 방법을 모른다)입니다 :
import numpy as np
import csv
import csv_splitter
import cv2
import os
from pyqtgraph.Qt import QtGui, QtCore
import numpy as np
import pyqtgraph as pg
app = QtGui.QApplication([])
with open('C:/Users/jkspu/Desktop/Force.csv','r') as input, open('C:/Users/jkspu/Desktop/Op.csv', 'w') as output:
try:
read = csv.reader(input)
for r in read:
non_blank = (line for line in input if line.strip())
for i in range(17):
next(read)
output.writelines(non_blank)
finally:
print("Done!")
data_orig = np.genfromtxt('C:/Users/jkspu/Desktop/Op.csv', dtype =int, delimiter = ",")
win = pg.GraphicsWindow(title="Plot")
win.resize(1000, 600)
win.setWindowTitle('First_Plot')
p1 = win.addPlot(title="Parametric, grid enabled")
X = data_orig[412:524,1]
Y1 = data_orig[412:524,4]
Y2 = data_orig[412:524,3]
Y3 = data_orig[412:524,2]
p1.plot(X, Y1, pen = 'r')
p1.plot(X, Y2, pen = 'b')
fig = p1.plot(X, Y3, pen = 'g')
p1.setLabel('left', "Y Axis", units = 'N')
p1.setLabel('bottom', "X Axis", units = 'ms')
if __name__ == '__main__':
import sys
if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):
QtGui.QApplication.instance().exec_()
어떻게 이상적으로 기대된다의 그림 :
요청 : 내가 친절 Pyqtgraph에서 애니메이션 라인 (+ 상호 작용뿐만 아니라)을 가진 일부 전문 지식을 물어 봐도 될까요?
나는 분명히있을 수 있으면 좋겠다. 제발 친절하게 알려주세요, 고마워요!
pyqtgraph 또는 matplotlib를 사용할지 여부를 결정해야합니다. 둘 다 불가능합니다. – ImportanceOfBeingErnest
예, Pyqtgraph를 원합니다. 대화 형 시간 추적 라인을 사용하여 온라인에서 많은 도움을 얻을 수 없었습니다. 그러나 나의 호기심 때문에, Matplotlib에서 그것을 할 수 있습니까? (내가 의미하는 인터 액티비티). – Jeremy
둘 다 가능합니다. 그렇습니다. 이 질문은 어떤 잠재 고객에게도 어필 할 수 없으므로 여기에서 필요하지 않은 태그를 제거하는 것이 좋습니다. matplotlib 전문가는 pyqtgraph에 대해 아무 것도 모를 수 있으며 pyqtgraph 전문가는 matplotlib 항목에 대해 혼란 스러울 수 있습니다. – ImportanceOfBeingErnest