Czy możliwe jest tworzenie dynamicznych wykresów w Gnuplot? Do moich celów potrzebuję tego, że jako że dane są generowane przez jakąś pętlę, użyję gnuplot, aby umieścić znacznik na osi x-y zachowując starsze. W jakiś sposób będę mógł obserwować ewolucję danych, zamiast tylko widzieć ostateczny wynik partii.
To, czego specjalnie chcę, jest równoważne poleceniu "drawnow" w MATLAB.
Chociaż nie jestem całkowicie spokrewniony, teraz jestemużywanie zwykłego seplenienia do generowania danych w pętli i cgn w celu wykreślenia w seplenie za pomocą gnuplot. (Potrafię wykreślić dane w formie wsadowej w zwykłym seplenie za pomocą cgn, który wykorzystuje gnuplot)
Z góry bardzo dziękuję za uwagę.
edytuj: W tym celu napisałem kod w powszechnym seplenie. Możesz to sprawdzić tutaj:
Wykreślanie danych sekwencyjnie z emacs przy użyciu Common Lisp i Gnuplot
Wątek ten jest jednak bardziej ogólny i wymaga dynamicznego kreślenia w gnuplot. Wszelkie sugestie są mile widziane.
Odpowiedzi:
1 dla odpowiedzi № 1Niestety, nie jest łatwo wyrysować pojedyncze punkty w gnuplot, ale na szczęście istnieje kilka prostych hacków omówionych tutaj: Wykreślanie pojedynczego punktu za pomocą Gnuplot. The Echo omawiana metoda będzie działać tylko w środowisku Unix.
Używanie tego z replot
zamiast plot
w twoim programie powinien dać ci wykres punktów ewoluujących z czasem, który zachowuje poprzednie punkty.
Innym sposobem, którego używam w pythonie, jestże umieściłem punkty danych w pliku. W każdej iteracji dodajemy punkty do pliku, a następnie rysuję ponownie za pomocą gnuplot. Jest trochę brzydka, ale w większości przypadków spełnia swoją funkcję.
0 dla odpowiedzi nr 2
Nie jestem pewien, czy całkowicie rozumiem, o co prosisz, ale jeśli chcesz dodać wykres do ostatnio napisanego ciągu (i używasz gnuplot 4.4), wykonaj następujące czynności:
gnuplot> plot sin(x),cos(x) #plot sin and cos in an xterm window
gnuplot> eval GPVAL_LAST_PLOT."cos(x+pi/2.5)" #add cos(x+pi/2.5) to the current plot
W każdym razie, nie jestem pewien, czy o to pytasz, ponieważ nie używam Matlaba, ale mam taką nadzieję.