graph - 在 Gnuplot 中绘制来自两个不同文件的数据
问题描述
我有两个不同的文本文件,其中包含要绘制的数字列表。一个文件包含 x 值,另一个文件包含 y 值。如果它们在同一个文件中,我知道如何绘制它们,但我不知道如何处理单独的文件。我该怎么做?顺便说一句,我正在使用 GNUplot。
如果有用的话,这里有两个文件中的两个小数据位:
x values
0
563
1563
2563
3563
4563
5563
corresponding y values
738500.0
683000.0
647000.0
623500.0
607500.0
解决方案
我想我已经看到过这样的问题,但我现在找不到。好吧,Linux(与 Windows 不同)有一些内置工具,您可以在其中轻松地逐行附加两个文件。如果您只想在 gnuplot 中执行此操作(因此与平台无关),以下将是一个建议。先决条件是您的文件已经在数据块中。如何完成此操作,请参阅:gnuplot: load datafile 1:1 into datablock。
代码:
### merge files by line
reset session
$Data1 <<EOD
0
563
1563
2563
3563
4563
5563
EOD
$Data2 <<EOD
738500.0
683000.0
647000.0
623500.0
607500.0
EOD
maxRow = |$Data1| <= |$Data2| ? |$Data1| : |$Data2| # find the shorter datablock
set print $Data
do for [i=1:maxRow] {
print $Data1[i][1:strlen($Data1[i])-1]." ".$Data2[i]
}
set print
plot $Data u 1:2 w lp pt 7
### end of code
结果:
推荐阅读
- javascript - 使用引导程序(js、html)动态服务移动和桌面网站
- magento2 - 将部署模式更改为开发人员后出现空白页
- sql - 更新 oracle DB 中的选择查询
- elixir - Ecto 架构默认值不包含在变更集更改中
- c# - 如何使用组合框更改richTextBox字体大小
- javascript - 使用 Reactjs 登录无法正常工作,因为他们说 Dispatch 不是函数
- java - 使用单元测试创建自定义迭代器
- c - 在c中将二进制int转换为二进制uint8_t
- c++ - 高级选择排序 - 在一次迭代中搜索两个元素
- apache-spark - 如何在 scala 中将 RDD[(int, string)] 转换为 Dataframe