2016-02-14 3 views
1

У меня есть следующий GNUPLOT скрипт:Начало GNUPLOT поставить бары бок о бок

set autoscale 
unset log 
unset label 
unset term 
unset output 
set xtics rotate by -90 
set ytic auto 
unset title 
set xlabel "Survey metadata attribute subset" 
set ylabel "Accuracy of classifier (%)" 
set boxwidth 0.1 
set style fill solid 
set term eps 
set output "metadata.eps" 
plot "metadata.dat" using 1:3:xtic(2) title "PART" with boxes, \ 
    "metadata.dat" using 1:5:xtic(2) title "JRip" with boxes, \ 
    "metadata.dat" using 1:7:xtic(2) title "FURIA" with boxes 

Однако, это привлекает все 3 комплекта брусков друг на друга, в то время как я хочу их бок о бок, в этом порядке, сгруппированы вместе. Таким образом, он должен выглядеть примерно так: PARTbar, JRipbar, FURIAbar, gap, PARTbar, JRipbar, FURIAbar, пробел и т. Д. Как мне это сделать?

ответ

3

Я думаю, что вы хотите set style histogram clustered.

Я принял минимальный набор данных (см внизу) Graphing его

set style histogram clustered 
set xtics rotate by -90 
unset title 
set xlabel "Survey metadata attribute subset" 
set ylabel "Accuracy of classifier (%)" 
set boxwidth 1 
set style fill solid 
set term png 
set output "so.png" 
plot [-0.5:2.75][1:17] "so.dat"using 3:xtic(2) title "PART" with histograms, \ 
    "" using 4 title "JRip" with histograms, \ 
    "" using 5 title "FURIA" with histograms 

, который дает

enter image description here

Я думаю, что вы можете взять его дальше отсюда.

файл данных "so.dat":

1 a 10 12 15 
2 b 12 14 16 
3 c 11 15 14 
1

Предположим, что ваши данные выглядит следующим образом

1 a 2 3 4 
2 b 1 4 5 
3 c 6 7 8 

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

Мы можем сделать это с

set boxwidth 0.25 
plot datafile using ($1-0.25):3 with boxes t "First Series", \ 
    "" using 1:4:xtic(2) with boxes t "Second Series", \ 
    "" using ($1+0.25):5 with boxes t "Third Series" 

Это приводит к следующей диаграмме

enter image description here

Обратите внимание, что я только установить в xtics на второй серии (один в середине), и я вычитал ширину окна из первой координаты x (перемещая ее на один блок) и добавил ее в последнюю серию (перемещая ее вперед одним блоком). Я предпочитаю использовать ширину поля 0,25 вместо 0,33, чтобы обеспечить небольшой разрыв между группами. Помещение xtic только во вторую серию гарантирует, что оно находится на одном посередине. С большим количеством ящиков вы будете использовать различную ширину и должны будете определить, на какой из них следует установить ярлыки.

Альтернативой является использование стиля гистограммы. С Ширина рамки по умолчанию 1, вы можете сделать

plot datafile u 3 with histogram t "First Series", \ 
    "" u 4:xtic(2) with histogram t "Second Series", \ 
    "" u 5 with histogram t "Third Series" 

enter image description here

В данном случае это не имеет значения, где вы поместите xtic спецификацию.

Стили гистограммы очень сложны, имеют множество вариантов. По сути, он состоит из нескольких стилей построения, которые все вызывают с помощью спецификации with histogram.

Какой из этих методов выбрать в основном вопрос личных предпочтений. Во-первых, как вы это сделаете до добавления стиля гистограммы. Метод box дает вам более ручное управление конечным результатом, но стиль гистограммы автоматизирует множество деталей, позволяющих получить эти прямоугольники в нужное русло.

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