带有框的 Gnuplot 直方图和每个值的颜色

Gnuplot histogram with boxes and a color per value

我想使用三个数据创建一个 boxes 的直方图,首先是迭代次数 x-axis,然后是执行时间 y-axis,最后是使用的进程数。

我希望看到每个使用的进程数都有一个条形图,并带有特定于进程数值的颜色。我该怎么做?

我的测试数据定义为:

"iterations" "processes" "time_execution"
1000 1 14
1000 2 10
1000 4 9
4000 1 60
4000 2 42
4000 4 45
7000 1 80
7000 2 70
7000 4 50

到目前为止,这是我的脚本,但我无法让它并排放置三个栏:

set term svg
set output out.svg

set boxwidth 1
set style fill solid 1.00 border 0
set style histogram
set size ratio 0.8

set xlabel 'Number of iterations'
set ylabel offset 2 'Time execution in seconds'

set key left Right
set key samplen 2 spacing .8 height 3 font ',10'
set title 'Time execution per iterations and processus used'

plot test.data u 1:3:2 w boxes

谢谢!

您可以使用lc variable

plot test.data u 1:3:2 w boxes lc variable notitle

编辑

notitle不是必须的,但是这样剧情会更好看。

我猜你的数据格式不符合预期的直方图格式。检查 gnuplot homepage 上的示例,不过,我认为这些示例太拥挤,可能会造成混淆,这也许是 SO 上有这么多直方图问题的原因。

如果您修改数据格式(见下文),将很容易绘制直方图。 您可能可以使用任何格式,但准备数据的工作量会更高(例如,请参见此处:Gnuplot: How to plot a bar graph from flattened tables)。

脚本:

### plotting histogram requires suitable input data format
reset session

$Data <<EOD
xxx     1    2    4
1000   14   10    9
4000   60   42   45
7000   80   70   50
EOD

set style histogram clustered gap 1
set style data histogram
set boxwidth 0.8 relative
set style fill solid 0.3

set xlabel 'Number of iterations'
set xtics out
set ylabel 'Time execution in seconds'
set grid x,y
set key top center title "Processors"
set offset 0,0,0.5,0

plot for [col=2:4] $Data u col:xtic(1) ti col
### end of script

结果: