如何在 gnuplot 中绘制文本文件中的一些特定数据
How to plot some particular data from a text file in 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
的行不应该在图中并且对于每个 n (n==0 ? 0x008000 : n==1 ? 0xFF0000 : n==2 ? 0x000000)
我想要如右图所示用每种颜色标记名称。
如果我对你的问题的解释正确,我猜你正在寻找 index
和 label
。检查 help index
和 help label
。
every
和 index
.
可能有点混淆
every
允许选择由一个空行分隔的“块”。
index
允许选择由两个或多个空行分隔的“块”。
代码:
### 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
结果:
我有一个两列的 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)
我想要如右图所示用每种颜色标记名称。
如果我对你的问题的解释正确,我猜你正在寻找 index
和 label
。检查 help index
和 help label
。
every
和 index
.
every
允许选择由一个空行分隔的“块”。index
允许选择由两个或多个空行分隔的“块”。
代码:
### 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
结果: