【问题标题】:GnuPlot :: Plotting 3D recorded in an unconventional formatGnuPlot :: 绘制以非常规格式记录的 3D
【发布时间】:2019-10-20 20:55:46
【问题描述】:

我想准备一个脚本文件来绘制一些动力学光谱结果的 3D 图。在实验中,溶液的吸收光谱在从 t0 到 tf 的增加时间依次测量,时间 Δt 不断增加。 该图将显示吸光度 (Z) 随波长和时间的变化。

使用 UV-VIS 光谱仪记录数据并保存为 CSV 文本文件。

该文件包含一个表格,其中第一列是光谱的波长。之后,为每个测量的光谱添加一列,列的数量取决于总时间和测量之间的时间间隔。每个光谱的时间出现在标题行中。

我想知道是否可以用最少的预格式化直接绘制数据,而无需以更标准的 XYZ 格式重写数据。

数据文件的结构是这样的

标题;紫外-可见分光镜
评论;
日期; 23/10/2018 16:41:12
操作员;实验室
系统名称;未定义
波长(nm); 0分钟; 0,1 分钟; 0,2 分钟; 0,3 分钟; ... 28,5 分钟
400,5551; 1,491613E-03; 1,810312E-03; 2,01891E-03; ... 4,755786E-03
... ... ... ... ... ...
799,2119; -5,509266E-04; 3,26314E-04; -4,319865E-04; ... -5,087912E-04
(EOF)

此文件kinetic_spectroscopy.csv 中包含样本数据的副本。

谢谢。

【问题讨论】:

  • 你能在你的数据上使用transposeexcel的函数吗?
  • ii 使用 Excel 转置数据没有问题,但我不明白数据格式的这种变化如何有助于读取数据。

标签: csv gnuplot


【解决方案1】:

您的数据是 gnuplot 可接受的形式,但说服程序将其绘制为每个波长一条线而不是网格表面更困难。首先让我们确定文件可以读取和打印。以下命令应读取 x/y 坐标(x = 第一行,y = 第一列)和 z 值以构建表面。

DATA = 'espectros cinetica.csv'
set datafile separator ';'  # csv file with semicolon

                            # Your data uses , as a decimal point.
set decimal locale          # The program can handle this if your locale is correct.
show decimal                # confirm this by inspecting the output from "show".

set title DATA
set ylabel "Wavelength"
set xlabel "Time (min)"
set xyplane 0
set style data lines

splot DATA matrix nonuniform using 1:2:3 lc palette

您的数据实际上看起来没问题。对于较少数量的扫描,它可能不是您想要的。为了绘制单独的线,每次扫描一条,我们可以将其分解为一系列线图而不是单个曲面图:

 DATA = 'espectros cinetica.csv'
 set datafile separator ";"
 set decimal locale
 unset key
 set title DATA
 set style data lines
 set ylabel "Wavelength"
 set xlabel "Time (min)"
 set xtics offset 0,-1      # move labels away from axis

 splot for [row=0:*] DATA matrix nonuniform every :::row::row using 1:2:3

这是我从您的数据文件的前 100 行得到的。行数据按 gnuplot 线型顺序着色。其他着色方案是可能的。

【讨论】:

  • 这两个代码都给了我一个我想要实现的好方法。我已经在使用 GnuPlot 5.2.7 的 Windows 7.0 计算机上运行了它们,并取得了部分成功。对于第一个脚本,我的绘图与您的相似,但我似乎更像是散点图而不是网格,并收到消息“espectros_cinetica.plt”第 13 行:警告:矩阵包含缺失或未定义的值。对于第二个脚本,我收到了类似的消息,但没有情节。
  • 猜想我需要了解更多关于在 GnuPlot 中处理数据和 3D 图的知识。有什么建议从哪里开始(从基础开始)?
  • 警告信息是无害的。 Windows 可能没有正确设置您的语言环境。您是否检查了show decimal 的输出确认它将把逗号识别为输入文件中的小数分隔符?如果这不起作用,我将编辑数据文件以将所有逗号更改为句点。
  • 另一个想法。我将“带线”设置为默认样式。您可能有“带点”,这会改变情节的外观。试试splot DATA matrix nonuniform using 1:2:3 with lines lc palette
  • 修改你提到的命令我可以重现你的情节。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
相关资源
最近更新 更多