3

我在 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",\

但它不起作用。有任何想法吗?

4

2 回答 2

1

看看这个问题的答案

Gnuplot:用一个文件的标题绘制多个数据集

我认为你需要像这样在索引后添加一个 1

使用 3:xticlabel(1) 轴 x1y1绘制“data.txt”索引1,线条 linecolor rgbcolor“red”

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

于 2013-05-02T22:36:53.237 回答
0

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

按照链接,您可以了解如何过滤文件(这样您就可以在特定行之后获取所有内容)

所以在我们的例子中:

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

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

我还建议定义您提供给 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 手册中的时间格式。


编辑:

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

于 2013-05-02T22:41:50.447 回答