让gnuplot并排放置条形图

时间:2016-02-14 00:23:20

标签: gnuplot bar-chart

我有以下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,gap等。我将如何做到这一点?

2 个答案:

答案 0 :(得分:4)

我想你想要的是set style histogram clustered

我采用了一个最小的数据集(见下图)用

绘制图表
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 :(得分:2)

假设您的数据看起来像这样

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坐标中减去了boxwidth(将它移回一个盒子单位),并将其添加到最后一个系列(将其向前移动一个箱子单位)。我选择使用0.25的盒宽而不是0.33来允许组之间有一点差距。将xtic仅放在第二个系列上可确保它位于中间的那个上。使用更多的盒子,您将使用不同的宽度,并且必须确定在哪个盒子上设置xtic标签。

另一种方法是使用直方图样式。如果默认的boxwidth为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方法为您提供了对最终结果的更多手动控制,但直方图样式可以自动完成使这些框恰到好处的许多细节。