在Gnuplot上绘图 - 跳过线

时间:2013-05-02 22:13:30

标签: gnuplot

我在Gnuplot中读取文件时遇到了一些问题。 例如,我有一个这样的文件:

___________________________________________
'#current' 
month followed retweeted mentioned replied 

Jan 395 29 35 28 

Feb 380 28 32 31 

'#previous' 
month followed retweeted mentioned replied 

Jan 381 30 38 32 

Feb 378 25 42 30 

Mar 374 28 46 40
______________________________________________________

我只需要读取第二个块,它以标签“#previous”开头。我该怎么做?我试过这个命令:

plot "data.txt" index 'previous' using 3:xticlabel(1) axes x1y1 with lines linecolor rgbcolor "red",\

但它不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

查看此问题的答案

Gnuplot: Plotting several datasets with titles from one file

我认为你需要在索引之后加一个1

绘制“data.txt”索引 1 使用3:xticlabel(1)axis x1y1 with line linecolor rgbcolor“red”

编辑: 数据集为0索引,因此第一个块的索引为0,第二个块(上一个)的索引为1。您提到的关于坏线的错误表明我们的数据文件格式存在问题。 阅读这些链接的数据格式 http://www.gnuplotting.org/plotting-data/ http://lowrank.net/gnuplot/datafile2-e.html

答案 1 :(得分:0)

让我们把所有东西放在一起:

关注this链接,您可以了解如何过滤文件(这样您就可以获得某些行后的所有内容)

所以在我们的案例中:

sed -e '1,/previous/d' data.txt > gnuplot some_gnuplot_options

我是从我的windows devel机器写的,所以无法验证,但这应该让你知道如何做到这一点。

我还建议您定义gnuplot配置文件,并将其提供给gnuplot。只需创建settings.pg并将其放在那里(这是我为自己完成的一些工作的例子,因此它不适用于您的数据格式):

set terminal png size 1024, 360
set output "load.png"
set datafile separator "\t"
set timefmt "%Y-%m-%d %H:%M:%S"
set xdata time
set format x "%m/%d\n%H:%M"
set xrange["2012-04-29 11:00:00":"2012-05-01 11:58:00"] noreverse nowriteback
set autoscale y
set grid
set key left box
plot "chart.txt" using 1:2 t 'column_1' with lines, "chart.txt" using 1:3 t 'column_2' with lines

那么你的gnuplot调用看起来像这样:

sed -e '1,/previous/d' data.txt > gnuplot your_pg_file.pg

您还需要从gnuplot手册here检查时间格式。


编辑:

如果这是你的大学作业,你不应该在这里发表你的问题:-)我不想无聊或者其他什么,但是你不是在做文书研究和尝试不同的事情后找到你的解决方案的目标吗? : - )