2011-07-21 16 views
10

Chcę promieniowe (polarny) Działka przy użyciu gnuplot (czyli w kołowym układzie współrzędnych (r, theta)Jak uzyskać wykres radialny (polarny) za pomocą wykresu gnu? .

Tutaj użyłem wartości:

Theta Max-strain 
0  3400 
60 5300 
120 4700 
180 3800 
240 4100 
300 3100 
360 3400 

Jak zdobyć taką działkę ? użyciu gnu-plot

+3

Możesz chcieć pozbyć się 360 ° na swojej działce, ponieważ jest zbędne z 0 ° ... – Woltan

Odpowiedz

25

próbowałem odtworzyć fabułę swoje pytanie, a to jest to, co wymyśliłem:

unset border 
set polar 
set angles degrees #set gnuplot on degrees instead of radians 

set style line 10 lt 1 lc 0 lw 0.3 #redefine a new line style for the grid 

set grid polar 60 #set the grid to be displayed every 60 degrees 
set grid ls 10 

set xrange [-6000:6000] #make gnuplot to go until 6000 
set yrange [-6000:6000] 

set xtics axis #disply the xtics on the axis instead of on the border 
set ytics axis 

set xtics scale 0 #"remove" the tics so that only the y tics are displayed 
set xtics ("" 1000, "" 2000, "" 3000, "" 4000, "" 5000, "" 6000) #set the xtics only go from 0 to 6000 with increment of1000 but do not display anything. This has to be done otherwise the grid will not be displayed correctly. 
set ytics 0, 1000, 6000 #make the ytics go from the center (0) to 6000 with incrment of 1000 

set size square 

set key lmargin 

set_label(x, text) = sprintf("set label '%s' at (6500*cos(%f)), (6500*sin(%f))  center", text, x, x) #this places a label on the outside 

#here all labels are created 
eval set_label(0, "0") 
eval set_label(60, "60") 
eval set_label(120, "120") 
eval set_label(180, "180") 
eval set_label(240, "240") 
eval set_label(300, "300") 


set style line 11 lt 1 lw 2 pt 2 ps 2 #set the line style for the plot 

#and finally the plot 
plot "-" u 1:2 t "Max strain" w lp ls 11 
0 3400 
60 5300 
120 4700 
180 3800 
240 4100 
300 3100 
360 3400 
e 

Plot of the script above

Jak widać , główną różnicą jest to, że kąt 0 nie jest na górze, ale po prawej (co jest matematycznie poprawne). Możesz to zmienić, modyfikując użycie opóźnienia na wykresie i funkcji set_label.

Jak widać w scenariuszu, nie wszystko jest naprawdę ostre i błyszczące. Jeśli ktoś znajdzie ulepszenia, daj mi znać!

Ostatnia część "porady": nie zawsze rozsądne jest odtwarzanie wykresu z jakiegoś narzędzia z gnuplotem. Często siła gnuplot polega na wykreślaniu danych w najprostszy sposób, aby być łatwo powtarzalnym. Może uda ci się wykopać niektóre linijki z powyższego scenariusza i nadal będziesz z niego zadowolony.

+0

Dziękuję bardzo. To było bardzo pomocne. Próbowałem użyć set_label dokładnie tak, jak wspomniano powyżej, ale dostałem błąd. Bez etykiet nie działa. Co jeśli wartości ujemne powiedzą -3400, -5300 itd. ... to na powyższym wykresie zamiast 6000 na 0 w osi y, powinno ono wynosić od 0 do -6000 do wewnątrz. Podobny do wykresu dostajesz w MS Excel. Jak zdobyć taką fabułę? – Dolly

+0

@Dolly Makro 'set_label' działa na moim komputerze. Co to jest komunikat o błędzie? Jeśli chodzi o wartości ujemne: na wykresie biegunowym nie można mieć wartości ujemnych, ponieważ wartość jest mniej więcej promieniem, a promień nie może być ujemny. Jeśli masz wartości ujemne, może nie powinieneś używać wykresu polarnego lub mapować go za pomocą 'wyrażeń' i' log' ?! – Woltan

+1

Kiedy używam funkcji set_label plot nie jest tworzone. Kiedy nie używam komendy set_label, zostanie utworzony wykres. Czy opcja nie jest dostępna w starszej wersji gnu-plot? Gdzie mogę pobrać nową wersję? – Dolly

5

Oto podręcznik http://t16web.lanl.gov/Kawano/gnuplot/polar-e.html

set polar 
set angles degrees 

i zdobyć koła:

set grid polar 

Oto demo: http://gnuplot.sourceforge.net/demo/polar.html

+2

Dzięki. Próbowałem już używać zestawu biegunowego. Ale nie mogłem pokazać w nim kątów i musiałem określić xiy, a uzyskany spisek nie pasował do tego, co chciałem. Przeskanowałem teraz moje pytanie. Mam nadzieję, że tym razem jestem jasny. – Dolly

+0

spróbuj zrobić "wykres danych ... z liniami". – osgx

+0

'ustawić siatkę polarną 30' doda siatkę z linią co 30 stopni. – osgx

Powiązane problemy