gpt4 book ai didi

sorting - 如何在 gnuplot 中对数据 block 进行排序?

转载 作者:行者123 更新时间:2023-12-04 07:34:31 43 4
gpt4 key购买 nike

用于排序 文件 按列,Linux 用户拥有实用程序 sort .
Windows 用户必须安装,例如CoreUtils来自 GnuWin获得相同(或相似)的功能。
因此,首先按 column1 然后按 column2 对文件进行排序的最小代码,然后绘制文件将是这样的:

plot '<sort -k 1,2 "myFile.dat"' u 1:2
但是,现在我有一个数据块 $Data :
$Data <<EOD
1 6
4 8
3 7
2 5
1 4
2 3
EOD
到目前为止,我尝试过的所有命令都以错误消息告终:
plot '<sort -k 1,2' $Data u 1:2

#--> Bad data on line 1 of file <sort -k 1,2

plot '<sort -k 1,2 $Data' u 1:2
plot '<sort -k 1,2 <$Data' u 1:2

#--> warning: Skipping data file with no valid points
#--> x range is invalid

plot '<sort -k 1,2 '<$Data u 1:2

#--> Column number or datablock line expected
我不想先将数据块写入文件并从文件中再次读取它。我目前不知道如何重定向 $Data 的内容到 sort 的标准输入.有没有适用于 Windows 和 Linux 的解决方案?
更新:
使用@Ethan 的建议代码时,我得到以下结果。注意台词 2 52 3我期望(和伊森有)相反。
# Curve 0 of 1, 6 points
# Curve title: "$Data_1 using 1:2:1"
# x y type
1 4 i
1 6 i
2 5 i
2 3 i
3 7 i
4 8 i
知道这是为什么吗?我在 Win10 上运行 gnuplot 5.4.1。

最佳答案

我将备份并建议您重新考虑最初对使用临时文件的限制。最直接的解决方案是这样的:

   set print "| sort -k 1,2 > sorted.dat"
print $Data
unset print
plot 'sorted.dat'
如果您解释了为什么不想使用临时文件,那么该问题的答案可能与排序问题无关。
如果关注的是临时文件的名称,那么可能是这样的:
  tempfile = system("mktemp")
set print "| sort -k 1,2 > ".tempfile
print $Data
unset print
plot tempfile with points

关于sorting - 如何在 gnuplot 中对数据 block 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67801386/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com