gpt4 book ai didi

gnuplot - 使用 Gnuplot 有条件地绘制点颜色

转载 作者:行者123 更新时间:2023-12-02 12:29:49 30 4
gpt4 key购买 nike

我有一个包含四列数据的文件。我仅使用前三个来绘制 3D 绘图,现在不需要第四个。

我想知道如果满足某些条件,如何更改点的颜色。例如,如果点的值 (x,y,z) 大于 (16,400,65) ,我想将其绘制为灰色。如果它们小于这个值,我想使用红色。

我尝试使用 awk 来实现相同的效果,它仅以不同的颜色绘制两个点。这是我的代码。

gnuplot>splot "< awk '{if( ($2 > \"16\") || ($1 > \"400\") || ($3 > \"65\"))  print}'                                       
./8_77_non_pareto_data.dat " u 2:1:3 w p pt 8 lc rgb "grey", \
"< awk '{if( ($2 < \"16\") || ($1 < \"400\") || ($3 < \"65\")) print}'
./8_77_non_pareto_data.dat " u 2:1:3 w p pt 8 lc rgb "red", \
"./8_77_pareto_data.dat" u 2:1:3 w i lt 1 lc rgb "blue" t "Pareto points"

我的数据文件如下所示:

48      15.057599573464184      68      361
93 14.950459657063462 73 361
48 14.065204842090914 69 361
280 13.16320458043516 69 361
120 15.05281009307949 66 361
48 15.133322961840786 59 361
48 16.161631503473544 73 361
470 17.763180586730847 77 361

X 轴范围为 6 到 22。

Y 轴范围从 0 到 500。

Z 轴范围为 35 到 85。

我想将其想象为以三维方式在 (16,400,65) 周围有一个边界框。盒子里面的所有东西都是红色的,外面的东西都是灰色的。

希望有人可以帮助我。

P.S:蓝点打印得很好,虽然这里的示例数据没有显示满足某些条件,但有些点满足该条件。我没有在这里发布整个文件。

最佳答案

您可以稍微减少 awk 的工作量,并通过定义一个简单的函数在纯 gnuplot 中完成它:

#!/usr/bin/env gnuplot

set terminal png set output 'test.png'

bigx = 16; bigy = 400; bigz = 65

isbig(x,y,z) = (x > bigx || y > bigy || z > bigz) ? 1 : 0

set palette defined (0 0.5 0.5 0.5, 1 1 0 0) # (grey, red)

unset colorbox
set xrange [0:20]; set yrange [0:500]; set zrange [0:100]

splot 'data.dat' using 2:1:3:(isbig($2,$1,$3)) with points pt 7 palette notitle, \
'' using (1e6):1:1 with points pt 7 lc rgb '#888888' title 'in box', \
'' using (1e6):1:1 with points pt 7 lc rgb 'red' title 'not in box'

(在我看来,设置范围和取消设置颜色框的行以及两个额外的绘图命令只是为了让事情变得漂亮。它提供了一个键来描述两种颜色的含义,而无需分散注意力的颜色框。)

enter image description here

关于gnuplot - 使用 Gnuplot 有条件地绘制点颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14993538/

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