Построение статистических данных, желательно с использованием gnuplot - PullRequest
1 голос
/ 14 ноября 2010

У меня есть несколько числовых наборов данных, из которых я вычислил средние значения, медианы, отклонения, минимумы и максимумы, и я хотел бы их визуализировать (в Linux, без X, в файл изображения).

Я видел функциональность gnuplot для построения панелей ошибок, но у меня есть пара проблем с ними: мои наборы данных довольно плотно упакованы вдоль оси X, а панели ошибок gnuplot занимают слишком много места вдоль X ось; и я видел только то, как можно было бы изобразить минимум и максимум вместе с точкой данных между ними (предположительно для среднего значения), и я не вижу хорошего способа вписать медиану и отклонение в эту модель.

Кто-нибудь знает, как обойти эти проблемы в gnuplot? Или, может быть, есть лучшая программа, чем gnuplot в целом?

Ответы [ 4 ]

1 голос
/ 14 ноября 2010

Я думаю, что вы не должны ставить медиану и среднее на одном и том же графике, потому что они принципиально отличаются.

Стандартный способ отображения медианной статистики - это "box-and-whisker" -график , который показывает минимум, первый квартиль, медиану, третий квартиль и максимум.Чтобы получить это в gnuplot, вам нужно сделать несколько проходов, используя multiplot:

set multiplot
set style fill empty
set boxwidth 0.4
plot "data" using 1:3:2:6:5 with candlesticks lt -1 lw 5 notitle,\
     '' using 1:4:4:4:4 with candlesticks lt -1 lw 10 notitle
set boxwidth 0.3
plot "data" using 1:2:2:2:2 with candlesticks lt -1 lw 5 notitle,\
     '' using 1:6:6:6:6 with candlesticks lt -1 lw 5 notitle

Предполагается, что в вашем файле «data» есть столбцы x-value, минимум, первый квартиль, медиана, третий квартильмаксимум в таком порядке.Конечно, вы можете поэкспериментировать с шириной бокса, типами линий (lt) и шириной линий (lw), чтобы получить то, что вам нужно.

Если вы хотите получить среднее значение со стандартным отклонением, вы можете использоватьстандартные панели ошибок;Я полагаю, что вы можете использовать boxwidth для настройки размера полос ошибок.

Чтобы установить тип вывода, используйте set terminal.Я бы рекомендовал использовать векторный формат, чтобы избежать пикселизации.Вы можете увидеть, какие терминалы доступны в вашей установке с помощью help set terminal в приглашении gnuplot.Кроме того, используйте параметр butt для этого, если он доступен (что предотвращает "перерегулирование" линий).

1 голос
/ 14 ноября 2010

Я использую пакет R's lattice для отображения статистических данных.

Вы можете взглянуть на R Graph Gallery для примеров сценариев, которые отображают панели ошибок ("доверительные интервалы").

Вам не нужен X для отображения графиков. Оберните функцию построения решетки в устройстве postscript перед печатью:

mtxf.ps <- "myBarchart.ps"
postscript(mtxf.ps,
           width = 6,
           height = 4,
           paper = 'special',
           horizontal = F)
mtx.p <- barchart(...) 
print(mtx.p)
dev.off()

Этот фрагмент кода печатает barchart в файл PostScript, который можно преобразовать с помощью Imagemagick в PNG или другие форматы:

$ convert -density 200 myBarchart.ps myBarchart.png

R немного странный язык, но выразительный, когда вы выясните его причуды. Эта - довольно хорошая вводная книга по R, а эта - довольно хорошая книга о том, как использовать lattice в различных сценариях.

0 голосов
/ 08 июня 2011

Вы можете взглянуть на MathGL - это библиотека графиков GPL, которая может отображаться в консоли (не требуется X). И он имеет большой набор графических типов (в том числе для 2-х и 3-х ранговых данных), чем у gnuplot.

0 голосов
/ 15 ноября 2010

В дополнение к ответу Сванте, вы можете использовать

set bars small 

, чтобы удалить 'x-part' на панели ошибок.Например,

#!/bin/bash
echo "1 2 2.0 2.4
2 4 3.9 4.5
3 1.4 0.1 1.5
4 2.9 2.2 4" > "data.dat"
gnuplot<<EOF
set term png small; set output "data.png"
set xrange [0:5]; set yrange [0:5]
set bars small
plot "./data.dat" using 1:2:3:4 with errorbars
set output ; set term pop
EOF

Том

...