gnuplot:如何从数据文件中读取一个文本字符串?

时间:2019-06-05 12:38:34

标签: gnuplot

我正忙于从大型csv格式的数据文件生成一些绘图的系统。

到目前为止,我可以使用gnuplot来执行此任务,但是我也喜欢从数据文件中读取一些文本字符串,以进行一些调整,并将其用于标记和/或图形上的其他文本框。到目前为止,我还无法在gnuplot命令系统中执行此操作。

额外要求:应该能够在Windows上运行代码。

到目前为止,这是我的代码:

c

问题:我们如何在gnuplot中读取数据文件中指定位置的单个文本字符串?

1 个答案:

答案 0 :(得分:1)

您的代码存在以下问题:

  1. 您的变量是textInfoRowtextInfoColumn,之后是textRowtextColumn
  2. gnuplot不喜欢绘制字符串,即使终端设置为unknown也是如此。 只需将您的表达式更改为(textVar=stringcolumn(textInfoColumn),0)。它正在为变量分配一个值,但绘制0。选中help operators binary。表达式(a,b)是串行求值。

还请记住,gnuplot开始对0中的行进行计数。

数据: "BigDataFile.csv"(确保分隔符为TAB,StackOverflow将其转换为SPACE)

# "Big" data with some header
# another header line
1.000   2.000   3.000   4.000   5.000   6.000   7.000   8.000   9.000   10.00
2.000   0.982   0.755   0.526   0.684   0.090   0.221   0.402   0.594   0.331
3.000   0.119   0.904   0.938   0.960   0.067   0.607   0.368   0.540   0.317
4.000   0.782   0.060   0.163   0.446   0.826   0.503   0.096   0.494   0.949
5.000   0.930   0.703   0.294   0.990   0.919   0.038   0.550   0.467   HERE
6.000   0.346   0.830   0.920   0.285   0.575   0.878   0.747   0.532   0.222
7.000   0.207   0.120   0.709   0.194   0.854   0.501   0.241   0.505   0.123
8.000   0.862   0.479   0.531   0.640   0.259   0.673   0.708   0.559   0.516
9.000   0.979   0.581   0.611   0.664   0.369   0.775   0.808   0.522   0.294
10.00   0.514   0.516   0.780   0.232   0.407   0.718   0.140   0.568   0.619

您可以通过以下代码提取文本“单元格”。我不确定这是否是最快,最有效的方法,但是至少它是 gnuplot-only ,因此与平台无关,并且应该在Linux,MacOS和Windows下顺利运行。

代码:

### extract one "cell" of data
reset session

dataFileName="BigDataFile.csv"

set datafile separator "\t"     
textInfoRow = 5
textInfoColumn = 10

set terminal unknown 
plot dataFileName every ::textInfoRow-1::textInfoRow-1 using (textVar=stringcolumn(textInfoColumn),0) 

print textVar 
### end of code

结果:

HERE