Подтвердить что ты не робот

Гистограмма перекрывается гистограммой gnuplot

У меня есть следующие два файла данных, которые я хочу построить, используя gnuplot.

timings0.log:

41420
32587
4082
4668
81
547
325

timings1.log:

41297
32393
4106
4720
75
502
266

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

Вот мой текущий код:

set terminal svg size 500,500 enhanced font 'Times-Roman,14'

set key vertical maxrows 3

set style data histograms
set style histogram rowstacked title offset 0,-1 gap 1
set boxwidth 0.5 relative
set style fill solid 1.0

set xlabel offset 0,1
set xrange [-1:2]

set xtics 0,1
set xtics add ("1st Config"0)
set xtics add ("2nd Config"1)
set xtics add (""2)

set yrange [0:50000]
set ylabel "Time (ms)"
set ytics 0,5000,50000

set output "test.svg" 

plot newhistogram "0" lt 1, "<(sed '2!d' timings0.log)" notitle, "<(sed '3!d' timings0.log)" notitle, "<(sed '4!d' timings0.log)" notitle, "<(sed '5!d' timings0.log)" notitle,\
     newhistogram "1" lt 1, "<(sed '2!d' timings1.log)" t "Load", "<(sed '3!d' timings1.log)" t "Sort", "<(sed '4!d' timings1.log)" t "Calculation", "<(sed '5!d' timings1.log)" t "Cleanup"

Код работает отлично, когда я показываю только одну гистограмму (например, соответствующий timings0.log), но при запуске выше script для отображения обеих гистограмм они не распространяются на xaxis, и они кажутся для перекрытия. Вот вывод выше script:

введите описание изображения здесь

Может быть очевидное решение, но после многочисленных попыток и поиска нескольких ресурсов, доступных в Интернете, я не смог получить правильный вывод. Я использую gnuplot 5 patchlevel 3.

Спасибо заранее, любая помощь будет принята с благодарностью!

4b9b3361

Ответ 1

Попробуйте at:

plot newhistogram at 0 lt 1, ...
     newhistogram at 1 lt 1, ...

Я также получаю сообщение об ошибке с gap, по крайней мере, в gnuplot 4.6. Это не влияет на rowstacked, но вы можете использовать его до offset. Общий код:

set terminal svg size 500,500 enhanced font 'Times-Roman,14'

set key vertical maxrows 3

set style data histograms
set style histogram rowstacked
set boxwidth 0.5 relative
set style fill solid 1.0

set xlabel offset 0,1
set xrange [-1:2]

set xtics 0,1
set xtics add ("1st Config"0)
set xtics add ("2nd Config"1)
set xtics add (""2)

set yrange [0:50000]
set ylabel "Time (ms)"
set ytics 0,5000,50000

set output "test.svg"

plot newhistogram at 0 lt 1, "<(sed '2!d' timings0.log)" notitle, "<(sed '3!d' timings0.log)" notitle, "<(sed '4!d' timings0.log)" notitle, "<(sed '5!d' timings0.log)" notitle,\
     newhistogram at 1 lt 1, "<(sed '2!d' timings1.log)" t "Load", "<(sed '3!d' timings1.log)" t "Sort", "<(sed '4!d' timings1.log)" t "Calculation", "<(sed '5!d' timings1.log)" t "Cleanup"

Похоже на меня:

введите описание изображения здесь