2013-01-11 10 views
12

Wykreślam zestaw danych na Gnuplot i chcę nałożyć funkcję x^2 na tym samym wykresie. Mogę to zrobić tak:Ograniczenie domeny funkcji wykreślonej na Gnuplot

plot "filename" using 1:2, x**2 

która produkuje działkę w którym funkcja x^2 rozciąga się na całym obszarze wykresu. Chciałbym, aby funkcja była wyświetlana tylko na małym odcinku wykresu, np. Od x = 1 do x = 2, podczas gdy rozmiar wykresu jest podyktowany przez filename, aby był od x = 0 do x = 10. Wiem, że aby wykreślić funkcję przez siebie mogę zrobić:

plot [1:2] x**2 

Ale jak bym zachować nakładanie razem, biorąc pod uwagę, że to, co starałem intuicyjnie nie działa:

plot "filename" using 1:2, [1:2] x**2 

invalid expression 

Dokumentacja wydaje Trudno to zinterpretować, jeśli chodzi o to, aby to zadziałało.

Odpowiedz

19

Najprostszym sposobem może być określenie funkcji odcinkowo za pomocą trójskładnikowej operatora ?:

f(x) = (x > 1 && x < 2) ? x**2 : 1/0 
plot "filename" using 1:2, f(x) 

Innym sposobem jest poleceniem replot:

plot "filename" using 1:2 
replot [1:2] x**2 
+0

jednak tę funkcję odcinkowo wykazuje nieciągłość jonów wątek! Czy wiesz, jak to usunąć? Dziękuję za odpowiedź, którą napisałeś przez Wey. –

+0

Nie jestem pewien, co masz na myśli przez nieciągłość w spisku. Kiedy rysuję f (x) otrzymuję x^2 od 1 do 2, zgodnie z zamówieniem. Czy mógłbyś wyjaśnić pytanie? – andyras

+0

@andyas Dziękujemy za szybką odpowiedź! Mam na myśli skok od 0 do następnej wartości, ponieważ ta funkcja nie jest ciągła w części. Pozdrawiam –