gpt4 book ai didi

ubuntu - 使用 Gnuplot 制作多重折线图

转载 作者:行者123 更新时间:2023-12-04 19:07:26 25 4
gpt4 key购买 nike

我有一个包含以下数据的 txt 文件:
0 0 0.000004 1 0.000003 2 0.000002 3 0.000002 ... 99 0.000002 100 0.000001
1 0 0.000002 1 0.000002 2 0.000001 3 0.000002 ... 99 0.000021 100 0.000020
2 0 0.000003 1 0.000002 2 0.000003 3 0.000003 ... 99 0.000041 100 0.000044
3 0 0.000003 1 0.000002 2 0.000004 3 0.000004 ... 99 0.000071 100 0.000070
我想在 gnuplot 折线图中使用它。每行的第一个数字定义一种颜色(一组),然后在 duo 中,第二个和第三个定义一个数据对(纵坐标上的单个数字,横坐标上的小数点)。因此,第四和第五是二重奏,总是用相同的颜色。
在本例中,因此将有 3 种不同的颜色(因此是线条),每种颜色有 100 个点。
如果需要,我可以去掉每行的第一个数字,并将换行定义为颜色变化(组)。我将一些数据以粗体显示以更好地查看二重奏。
预先感谢您的帮助。
我将执行的命令将在 Unix 终端上。

最佳答案

嗯,你的数据格式有点特别。您可能知道 gnuplot 不喜欢行中的数据。
幸运的是,gnuplot 也可以灵活地处理这种格式。当然,您始终可以使用其他工具将数据重新格式化为更便于 gnuplot 读取的格式。如果可能的话,我宁愿避免使用额外的外部工具来确保跨平台兼容性。
检查关键字help for , help matrixhelp every .
在下面的情况下 matrix every a::b:i::i意思是:它绘制从 b 列开始的每一列,但仅针对第 i 行(实际上是从第 i 行到第 i 行)。
代码:

### plot special data format
reset session

# create some test data
set print $Data
do for [i=0:3] {
Line = sprintf("%d",i)
do for [j=0:100] {
Line = Line.sprintf(" %d %.3f", j, rand(0)*0.5+i)
}
print Line
}
set print

set key out

plot for [i=0:3] $Data u (column(1)/2-1):3 matrix every 2::2:i::i w lp \
lc i+1 pt i+4 title sprintf("Serie %d",i)
### end of code
结果:
enter image description here

关于ubuntu - 使用 Gnuplot 制作多重折线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65499939/

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