2012-06-29 4 views
2

Я пытаюсь построить горизонтальную гистограмму в gnuplot.Горизонтальная гистограмма в gnuplot

Это мой текущий vertival (обычный вид) гистограмма:

width=0.5 
hist(x,width)=width*floor(x/width)+width/2.0 
set boxwidth width*0.9 
set style fill solid 0.5 
plot "a" u (hist($2,width)):(1.0) smooth freq w boxes lc 3 notitle 

Теперь то, что мне нужно, это точно такой же результат, но повернуты по часовой стрелке, 90 градусов.

Я пробовал это ниже, но результаты действительно не то, что я ожидаю.

width=0.5 
hist(x,width)=width*floor(x/width)+width/2.0 
set boxwidth width*0.9 
set style fill solid 0.5 
plot "a" u (1.0):(hist($2,width)) smooth freq w boxes lc 3 notitle 
+0

См. [Переменные топоры Gnuplot] (http://stackoverflow.com/a/18898979/2604213) – Christoph

ответ

1

Пока еще нет общего поддержка горизонтальных участков в Gnuplot, вы можете сделать вполне приличные горизонтальные barplots используя boxxyerrorbars стиль. Он имеет 6-столбцовый вход (x, y, xlow, xhigh, ylow, yhigh). Вам просто нужно заранее рассчитать значения ваших баров.

я только что сделал что-то вроде этого ($ 2 относится к 'центру'):

участок 'datafile.csv' с использованием 'медианы': 'центр': 'мин': 'Макс': ($ 2 -0,4): ($ 2 + 0,4) с boxxyerrorbars

Если вы хотите категории текстовые метки вдоль оси у, здесь мы идем (я беру их с первой колонки в моем файле данных):

plot 'datafile.csv', используя 'median': 'center': 'min': 'max': ($ 2-0.4): ($ 2 + 0.4): ytic (1) с boxxyerrorbars

0

Спасибо. Это работает. Вот последовательный способ сделать все это. Первая печать обычный выходной файл данных в виде таблицы в другом файле сказать, datatable.txt

reset  
binwidth=0.015  
bin(x,width)=width*floor(x/width) + binwidth/2.0  
set table  
set output 'datatable.txt'  
plot './datafile.txt' using (bin($1,binwidth)):(1.0) smooth freq w p  
unset table 

set output "horizontalhist.png"  
pl './datatable.txt' u 2:1:(0.0):2:(($1)-(binwidth/2.0)):(($1)+(binwidth/2.0)) w boxxyerrorbars 

Это должно дать вам горизонтальные гистограммы.

2

Если результат битмапа является единственной проблемой, можно также использовать команду convert пакета ImageMagick после визуализации гистограммы с gnuplot.

convert -rotate 90 figure_in.png figure_out.png 

Перед делать это, повернуть все метки в gnuplot с rotate директивы.

Приведены примеры и дальнейшая информация here.

Смежные вопросы