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

Gnuplot:如何从数据文件中读取一个文本字符串?,gnuplot,Gnuplot,我正忙于从一个大的csv格式的数据文件中生成一些绘图的系统 到目前为止,我可以用gnuplot完成这项任务,但我也喜欢从数据文件中读取一些文本字符串,进行一些调整,并将它们用于标记和/或图形上的其他文本框。到目前为止,我还不能在gnuplot命令系统中实现这一点 额外要求:应该能够在windows上运行代码 这是我目前的代码: # The BigDataFile.csv files starts with some lines information # (string texts about

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

到目前为止,我可以用gnuplot完成这项任务,但我也喜欢从数据文件中读取一些文本字符串,进行一些调整,并将它们用于标记和/或图形上的其他文本框。到目前为止,我还不能在gnuplot命令系统中实现这一点

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

这是我目前的代码:

# The BigDataFile.csv files starts with some lines information
# (string texts about the matrix contense). After this info block,
# all the matrix data for  the plots.

dataFileName="BigDataFile.csv"

set datafile separator "\t"     

# Read one text string at line number 'textInfoRow' from column
# number 'textInfoColumn'

textInfoRow = 5

textInfoColumn = 10

# Now try to capture the string at some location in the info block. 

set terminal unknown 

plot dataFileName every ::textRow::textRow using (textVar=stringcolumn(textColumn))  # How can we do this ????

print textVar 

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

您的代码存在以下问题:

  • 您的变量是
    textinfow
    textInfoColumn
    以及以后的
    textRow
    textColumn
  • gnuplot不喜欢打印字符串,即使终端设置为
    unknown
    。 只需将表达式更改为
    (textVar=stringcolumn(textInfoColumn),0)
    。它为变量赋值,但打印
    0
    。选中帮助运算符二进制文件。表达式
    (a,b)
    是串行求值 还要记住,gnuplot从
    0
    开始计算行数

    数据:
    “BigDataFile.csv”
    (确保分隔符是选项卡,StackOverflow将其转换为空格)

    您可以通过以下代码提取文本“cell”。我不确定这是否是最快、最有效的方法,但至少它仅限于gnuplot,因此与平台无关,应该在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
    
    结果:

    ### 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
    

    此处

    文本编辑出现问题,对此表示抱歉。下一次我应该做得更好…..您仍然可以在编写问题后通过单击问题左下角的编辑按钮来编辑问题。这一次我已经帮你解决了问题,并修复了你的格式。首先,非常感谢!!你给了我一个问题真正原因的线索。为了解释我的问题情况,我对代码做了一些修改(请参阅“textcol”错误…对此表示抱歉),并删除了所有其他代码垃圾。因此,我也解决了这个问题,oeps。问题是:如果你在“plot…”之前添加pe命令“setXrange[65:95]”函数调用,则“绘图”代码将不再运行。如果您“取消设置”范围,那么“绘图”函数调用我们可以毫无问题地再次工作。目前我还不清楚原因。。。我将在文档中查找。我以前不知道您的代码中有什么。但是,当打印以提取上述值时,实际上最好执行
    plot[*:*][*:*]dataFileName…
    ,然后您将打印整个范围,否则范围可能会受到
    xrange
    yrange
    的限制。谢谢您的提示。因为我完整的Gnuplot代码是几个绘图和数据操作的序列,所以我不能在两者之间的某个地方重置会话。现在我意识到以前的命令可能会进一步导致函数调用失败。函数调用错误消息也没有告诉我原因。我对gnuplot代码还不熟悉,但我很高兴我现在可以在仅仅一天的学习之后生成非常好的图形……您不必执行
    重置会话
    。我只是把它作为拥有一个“定义”系统的第一行。正如你所说,。。。以前的设置可能会导致奇怪的结果。