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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
100
0
139 007
5

Ответы 5

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

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

title 1
title2 3
"long title" 5

Я рекомендую Perl-скрипт генератора гистограмм Дерека Брюнинга. Доступно на http://www.burningcutlery.com/derek/bargraph/

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

bar graph

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

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

multi color bar graph

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 01.02.2015 17:18

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

alex 12.02.2015 18:31

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

Christoph 12.02.2015 18:34

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

chinnychinchin 30.09.2015 00:53

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

Начнем с написания текстового файла команд GNUplot. Назовем его commands.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 в терминал.

Вы можете напрямую использовать гистограммы стилей, предоставляемые 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"

Другие вопросы по теме