gpt4 book ai didi

gnuplot - 完全忽略 Gnuplot 中的某些数据行

转载 作者:行者123 更新时间:2023-12-02 04:50:11 25 4
gpt4 key购买 nike

我想使用 Gnuplot 绘制一种数据透视图。所以我需要忽略文件中的一些数据行。我尝试了以下方法:

unset key

set xtics font "Times-Roman, 5"
set ytics font "Times-Roman, 5"

set multiplot layout 4,3 #title "Multiplots\n"

plot [7:50][0:1] 'forStackoverGnuplot.txt' using 1:($2==0?($3==4?$4:NaN):NaN) with lines ti '4'
plot [7:50][0:1] 'forStackoverGnuplot.txt' using 1:($2==0?($3==4?$4:"fe"):"fe") with lines ti '4'

数据文件:

20  0   5   0.668593155
7 0 4 0.885223087
20 0 5 0.668593155
10 0 4 0.92239289
20 0 5 0.668593155
20 0 4 0.834947746
30 0 4 0.693726036
50 0 4 0.47169919

但是我得到: Bad charts

这不是我期望的结果。我能做些什么?我想让数据线交错。

最佳答案

基本上,gnuplot 区分丢失和无效的数据点,参见例如In gnuplot, with “set datafile missing”, how to ignore both “nan” and “-nan”? .

如果您有未定义的点(例如 NaN1/0),绘图线将被中断。为此,您需要设置 datafile missing。但是,如果您在 using 语句中评估某些内容,那将不起作用,因为对于 'undefined' <-> 'missing' 选择来说已经太晚了(选择列,例如使用 using 1: 4 没问题)。所以声明

set datafile missing '?'
plot 'forStackoverGnuplot.txt' using 1:(($2==0 && $3==4) ? $4 : '?')

工作。

相反,您必须在外部过滤数据,并在绘制之前删除受影响的行:

unset key
set style data linespoints

set multiplot layout 1,2

plot [7:50][0:1] 'forStackoverGnuplot.txt' using 1:(($2==0 && $3==4) ? $4 : 1/0)

filter = '< awk ''{ if ($2 == 0 && $3 == 4) print $1, $2, $3, $4}'' '
plot [7:50][0:1] filter.' forStackoverGnuplot.txt' using 1:4

unset multiplot

这给出:

enter image description here

在左图中,绘制了点,但没有用线连接,因为它们之间存在“无效”点。

关于gnuplot - 完全忽略 Gnuplot 中的某些数据行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19000554/

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