Как вы строите гистограммы в gnuplot?


Ответы:


123

Простая гистограмма:

гистограмма

set boxwidth 0.5
set style fill solid
plot "data.dat" using 1:3:xtic(2) with boxes

data.dat:

0 label       100
1 label2      450
2 "bar label" 75

Если вы хотите по-другому оформить полосы, вы можете сделать что-нибудь вроде:

многоцветная гистограмма

set style line 1 lc rgb "red"
set style line 2 lc rgb "blue"

set style fill solid
set boxwidth 0.5

plot "data.dat" every ::0::0 using 1:3:xtic(2) with boxes ls 1, \
     "data.dat" every ::1::2 using 1:3:xtic(2) with boxes ls 2

Если вы хотите сделать несколько столбцов для каждой записи:

data.dat:

0     5
0.5   6


1.5   3
2     7


3     8
3.5   1

gnuplot:

set xtics ("label" 0.25, "label2" 1.75, "bar label" 3.25,)

set boxwidth 0.5
set style fill solid

plot 'data.dat' every 2    using 1:2 with boxes ls 1,\
     'data.dat' every 2::1 using 1:2 with boxes ls 2

barchart_multi

Если вы хотите быть хитрым и использовать несколько изящных уловок gnuplot:

Gnuplot имеет псевдо-столбцы, которые можно использовать в качестве индекса для раскрашивания:

plot 'data.dat' using 1:2:0 with boxes lc variable

barchart_multi2

Кроме того, вы можете использовать функцию для выбора желаемых цветов:

mycolor(x) = ((x*11244898) + 2851770)
plot 'data.dat' using 1:2:(mycolor($0)) with boxes lc rgb variable

barchart_multi3

Примечание: вам нужно будет добавить пару других основных команд, чтобы получить тот же эффект, что и в образцах изображений.


Для многих приложений удобнее использовать histogramстиль построения, особенно для группировки и наложения значений.
Christoph

@Christoph Привет, если я хочу добавить ключ для этого типа графика? что я должен делать ? Например, если я хочу добавить ключ, который говорит, что синяя линия - «зима», а красная линия - «лето»
Алекс

1
@alex Не уверен, какой из этих примеров вы имеете в виду: у lc rgb variableвас не может быть разных ключевых записей.
Кристоф

По какой-то причине мне пришлось использовать директиву notitle после каждого пункта сюжета, чтобы не допустить появления легенды.
chinnychinchin

25
построить "data.dat", используя 2: xtic (1) с гистограммой

Здесь data.dat содержит данные вида

название 1
title2 3
"длинное название" 5

17

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

Начнем с написания текстового файла команд GNUplot. Назовем его command.txt:

set term png
set output "graph.png"
set boxwidth 0.5
set style fill solid
plot "data.dat" using 1:3:xtic(2) with boxes

set term pngустановит GNUplot для вывода файла .png, и set output "graph.png"это имя файла, в который он будет выводить.

Следующие две строки говорят сами за себя. Пятая строка содержит много синтаксиса.

plot "data.dat" using 1:3:xtic(2) with boxes

"data.dat"это файл данных, с которым мы работаем. 1:3указывает, что мы будем использовать столбец 1 data.dat для x-координат и столбец 3 data.dat для y-координат. xtic()- это функция, отвечающая за нумерацию / маркировку оси x. xtic(2), следовательно, означает, что мы будем использовать столбец 2 data.dat для меток.

"data.dat" выглядит так:

0 label       100
1 label2      450
2 "bar label" 75

Чтобы построить график, войдите gnuplot commands.txtв терминал.



2

Вы можете напрямую использовать гистограммы стилей, предоставляемые gnuplot. Это пример, если у вас есть два выходных файла:

set style data histograms
 set style fill solid
 set boxwidth 0.5
 plot "file1.dat" using 5 title "Total1" lt rgb "#406090",\
      "file2.dat" using 5 title "Total2" lt rgb "#40FF00"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.