2014-04-27 11 views
5

Mam wykres z zestawem punktów dla różnych wartości x: 5 punktów dla x = 0,5, 5 punktów dla x = 0,6, ..., 5 punktów dla x = 1,4, 5 punktów dla x = 1,6.GNUPlot: W jaki sposób mogę utworzyć boxplot dla każdej wartości x?

Teraz chcę utworzyć planszę dla każdej z tych wartości x. Ale jakoś wszystkie moje pola mają wartość x = 0,5. Chcę, aby pola były tworzone przy prawidłowej wartości x. Odległość między wartościami 2 x może być różna. Moje bieżące wartości x wynoszą 0,5, 0,6, 0,7, 0,8, 0,9, 1,0, 1,2, 1,4 i 1,6, ale mogą być różne dla różnych wykresów. Jak to zrobić?

Jest to skrypt Gnuplot dla moich punktów: https://dl.dropboxusercontent.com/u/26464165/Points.gnu

Jest to skrypt Gnuplot dla moich boxplots: https://dl.dropboxusercontent.com/u/26464165/Boxplots.gnu

Dzięki za poświęcony czas!

+0

Nie, chcę boxplots. Chcę pokazać, jak bardzo wartości y różnią się dla każdej wartości x. Chodzi o wyniki różnych testów. – John

Odpowiedz

8

Musisz zmienić kolejność danych dla boksu. Statystyki są obliczane na kompletnych kolumnach. Więc trzeba zmienić swoje dane, takie jak:

# 1.0 1.2 1.4 ... 
2.2 2.2 3.06 
2.0 2.46 2.93 
2.2 2.46 3.06 
2.0 2.4 2.8 
1.73 2.33 2.8 

Następnie można wykreślić go z:

set style fill solid 0.25 border -1 
set style boxplot outliers pointtype 7 
set style data boxplot 

set title 'My Plot' font 'Arial,14'; 
set xtics ('1.0' 1, '1.2' 2, '1.4' 3) 
plot for [i=1:3] 'data.txt' using (i):i notitle 

Wynik z 4.6.4 jest:

enter image description here

Zamiast pisania xtics ręcznie, możesz je wyodrębnić (za pomocą narzędzi wiersza poleceń Unix), jak pokazano np. w https://stackoverflow.com/a/10799204/2604213:

header = "`head -1 data.txt | cut -b 2-`" 
set for [i=1:words(header)] xtics (word(header, i) i) 
+0

Dzięki za pomoc. Moim największym problemem było to, w jaki sposób uporządkowano moje dane. Przerobiłem swoje dane i teraz je kreślę: 'plot '-' używając (0.5): 1, '-' używając (0.6): 1, '-' używając (0.7): 1, '-' używając (0.8): 1, "-" używając (0.9): 1, "-" używając (1.0): 1, "-" używając (1.2): 1, "-" używając (1.4): 1, "-" using (1.6): 1; ' – John

+0

O tak, to jest sposób, aby przejść, jeśli chcesz zachować pozycje na osi numerycznej. – Christoph

1

odpowiedź Christoph jest w porządku, jeśli wiesz liczbę poziomów (kolumny), a ich nazwy (xtics) wyprzedzeniem. W przeciwnym razie, http://soc.if.usp.br/manual/gnuplot-doc/htmldocs/boxplot.html daje rozwiązanie z czwartym polem oświadczenia using (using x:data:width:level).

umieścić wszystkie dane w jednej kolumnie, a kolumnę czynnika towarzyszącego dając poziom dla każdego Data:

2.2 1.0 
2.2 1.2 
3.06 1.4 
2.0 1.0 
... 

Kolejność pojawiają się w danych nie ma znaczenia, tak długo jak poziomy są prawidłowe . Poziom jest konwertowany na ciąg, który zastępuje xtics.

modyfikując skrypt Christoph,

set style fill solid 0.25 border -1 
set style boxplot outliers pointtype 7 
set style data boxplot 

plot "data.txt" using (1):1:(0.5):2 

wygeneruje następujący:

Boxplot generated with GNUPlot using a factor column

Powiązane problemy