如何在gnuplot中绘制文本文件中的某些特定数据

如何在gnuplot中绘制文本文件中的某些特定数据,gnuplot,Gnuplot,我有一个两列的txt文件,我绘制的数据如下 MyColor(n) = n==0 ? 0x008000 : n==1 ? 0xFF0000 : n==2 ? 0x000000 : 0xFF8C00 plot datafile u 1:2:(MyColor(column(-2))) w l lw 1.0 lc rgb var notitle 这给了我三种不同颜色的底部三行和其他相同颜色的行(0xFF8C00),左图。但我只想绘制高达n==2(绘图中只有三行),而另一行0xFF8C00不应该

我有一个两列的txt文件,我绘制的数据如下

MyColor(n) = n==0 ? 0x008000  : n==1 ? 0xFF0000 : n==2 ? 0x000000 : 0xFF8C00
plot datafile u 1:2:(MyColor(column(-2))) w l  lw 1.0 lc rgb   var notitle
这给了我三种不同颜色的底部三行和其他相同颜色的行(
0xFF8C00
),左图。但我只想绘制高达
n==2
(绘图中只有三行),而另一行
0xFF8C00
不应该在绘图中,并且对于每个n
(n==0?0x008000:n==1?0xFF0000:n==2?0x000000)
我想用每种颜色标记一个名称,如右图所示。

如果我正确解释了您的问题,我猜您正在查找
索引和
标签。请检查
帮助索引和
帮助标签。
关于
每个
索引
可能会有点混淆

  • 每个
    允许选择由一条空行分隔的“块”
  • 索引
    允许选择由两行或多行空行分隔的“块”
代码:

### plot only selected block
reset session

# create some test data
set print $Data
do for [i=1:7] {
    do for [j=1:100] {
        print sprintf("%.3f %.3f", j, sin(j/30.)+i*0.2 + 0.05*rand(0))
    }
    print ""; print ""    # two empty lines
}
set print

myColor(n) = n==0 ? 0x008000  : n==1 ? 0xFF0000 : n==2 ? 0x000000 : 0xFF8C00

set label 1 "LA" at 40, 1.3 tc rgb myColor(0)
set label 2 "ZA" at 30, 1.4 tc rgb myColor(1)
set label 3 "TA" at 67, 1.5 tc rgb myColor(2)

plot $Data u 1:2:(myColor(column(-2))) index 0:2 w l lw 1.0 lc rgb var notitle
### end of code
结果:

### plot only selected block
reset session

# create some test data
set print $Data
do for [i=1:7] {
    do for [j=1:100] {
        print sprintf("%.3f %.3f", j, sin(j/30.)+i*0.2 + 0.05*rand(0))
    }
    print ""; print ""    # two empty lines
}
set print

myColor(n) = n==0 ? 0x008000  : n==1 ? 0xFF0000 : n==2 ? 0x000000 : 0xFF8C00

set label 1 "LA" at 40, 1.3 tc rgb myColor(0)
set label 2 "ZA" at 30, 1.4 tc rgb myColor(1)
set label 3 "TA" at 67, 1.5 tc rgb myColor(2)

plot $Data u 1:2:(myColor(column(-2))) index 0:2 w l lw 1.0 lc rgb var notitle
### end of code

查看
帮助每一个
帮助标签
。非常感谢您,先生。对于简单的文件,它工作得很好(帮助每一个),但对于类似的文件,请从这里下载,并用https://(xxxxxxwe.tl/t-5SFzfiKwjb替换XXXX)它正在处理X轴上的部分。链接不再有效…是的,已经七天了。我会更新它。我被新冠病毒-19问题困住了,不能再继续工作了。谢谢你先生查看我的帖子。我看到你的另一个回复,我也会在一段时间后更新。我想很好,我不再需要数据了。检查我的答案.