根据列中的值绘制新系列

时间:2018-01-06 16:53:20

标签: plot gnuplot

让我们假设我们有一个数据:

1383.77224864627    1910.27446956287    13
2022.08962783969    1870.75968662608    13
2244.59435149955    2334.43843428841    13
3223.73010669775    2409.90834407782    15
708.364446053354    3199.82702811616    15
1190.6942303025     2634.33363259192    15
1749.15599203783    2716.76870380272    19
2227.80906774024    3119.99529267007    19

是否可以根据第3列中的值绘制系列图?

本例中的预期结果是在一个图上有3个不同颜色的系列。

我知道我可以创建新系列:

plot 'datafile' using col1:col2, '' using col1:col3

或者在数据文件中使用系列之间的新行,但这不是我想做的。

谢谢! 编辑:我正在使用gnuplot 5.0版

2 个答案:

答案 0 :(得分:1)

您需要先过滤数据文件,然后分别绘制各个部分:

#prepare the command responsible for filtering the data file of interest
#select all rows the value in the 3rd column of which is equal to val
filterData(fname, val)=sprintf("<gawk '$3==%d' %s", val, fname)

#show individual dependencies in one plot
plot for [sval in "13 15"] \
    filterData('datafile.dat', int(sval)) w lp t sprintf('value %s', sval)

这会给你: enter image description here

答案 1 :(得分:1)

my 2012 answer的基础上以及我对你想要的东西的理解,这应该会有所帮助:

set palette defined ( 13 "blue", 15 "red", 19 "green")
unset key
unset colorbox
plot [500:3500][1800:3500] "x" u 1:2:3 with points palette ps 3 pt 5

产生

enter image description here

编辑:

还可以定义连续调色板,并根据其在该比例范围内的值来分配实际颜色。在实践中:

set palette defined ( 0 "blue", 20 "green", 40 "red")
unset key
set colorbox                              # for demo purpose
plot [500:3500][1800:3500] "x" u 1:2:3 with points palette ps 3 pt 7

带来

enter image description here

给定的数据集。添加新系列时颜色会发生变化。