如何制作透明标绘点
How to make a transparent plotted point
这里我试图在 spider/radar 图上实现雷达效果。理想情况下,我希望在给定时间的情况下让绘制的线条消失(例如,在 30 秒内绘制的线条逐渐变为透明,我正在考虑像顺序颜色图或绘制的线条是 deleted/cleared 那样改变),但这可能会导致问题.因此,如果将绘制的线 transition/fade 设置为透明,则可以减少整个图的混乱情况。这是可能的,但对我来说很棘手..
set grid ls 10
set xtics axis format "" scale 0
set ytics axis format ""
set size square
set style line 9 lt 1 lw 2 pt 2 ps 2
set multiplot layout 1,2
plot 'somedata' using 1:5 t "" w lp ls 9
unset multiplot
pause 90
replot
我如何在 Gnuplot 中实现这一点?
在我的阅读中,我遇到了一种叫做 Lerp/Lerping 颜色的东西,但是我没有使用 Csharp 或 Unity。
输出显示需要 fade/clear 的标记。
主要区别在于只有 1 而不是 9 作为 piture
example of points that need to transition/fade to transparent
根据您的描述,我仍然不清楚您的期望是什么。所以,这里有一个我认为是“雷达效应”的例子,即颜色逐渐消失。
它在 while 循环中设置透明颜色(检查 help while
),您可以通过按 x
(检查 help bind
)停止。
代码当然可以进一步优化,但希望大家能根据自己的需要进行调整。
代码:
### attempt to mimic a radar screen
reset session
# create some test landscape
set xrange [-8:8]
set yrange [-8:8]
set samples 50
set isosamples 50
set contour
set cntrparam level 5
set table $Data
splot (sin(1.3*x)*cos(.9*y)+cos(.8*x)*sin(1.9*y)+cos(y*.2*x))*3
unset table
unset contour
set angle degrees
Angle(dx,dy) = dx==dx && dy==dy ? dx==0 ? dy==0 ? NaN : \
abs(sgn(dy))*180-sgn(dy)*90 : dx<0 ? 180+atan(dy/dx) : \
dy<0 ? atan(dy/dx)+360 : atan(dy/dx) : NaN
r(x,y) = sqrt(x**2 + y**2)
set table $Contour
plot $Data u (Angle(,)):(r(,)) index 1::1
unset table
set size ratio 1
set polar
unset border
set border polar lc "green"
unset xtics
unset ytics
set format r ""
unset raxis
set rtics scale 0
set format t ""
set grid lw 2 lc "green"
set obj 1 rect from screen 0,0 to screen 1,1 fc "black" behind # black background
stop = 0
bind x "stop=1"
$Data <<EOD
45 5
0 4
123 3.5
325 3.5
EOD
unset key
set trange [0:360]
set rrange [0:8]
alpha(a,a0) = int((1-exp(-real(a)/a0))*255)<<24 # transparency "decay"
myBaseColor = 0x00ff00
myColorA(a) = myBaseColor + alpha(a,45) # decay for radar "beam"
AngleDiff(a,b) = b>a ? b-a : 360-a+b
myColorB(a,b) = myBaseColor + alpha(AngleDiff(a,b),220) # decay for data
a=90; step=5
while (!stop) {
a = a<step ? a=a+360-step : a-step
do for [i=0:180] {
set obj 100+i circle at 0,0 size 8 arc [a+i:a+i+2] fs solid noborder fc rgb myColorA(i) behind
}
plot $Data u 1:2:(myColorB(a,)) w p pt 7 lc rgb var, \
$Contour u 1:2:(myColorB(a,)) w l lc rgb var
}
### end of code
结果:(从 wxt 终端使用 ScreenToGif 截屏)
这里我试图在 spider/radar 图上实现雷达效果。理想情况下,我希望在给定时间的情况下让绘制的线条消失(例如,在 30 秒内绘制的线条逐渐变为透明,我正在考虑像顺序颜色图或绘制的线条是 deleted/cleared 那样改变),但这可能会导致问题.因此,如果将绘制的线 transition/fade 设置为透明,则可以减少整个图的混乱情况。这是可能的,但对我来说很棘手..
set grid ls 10
set xtics axis format "" scale 0
set ytics axis format ""
set size square
set style line 9 lt 1 lw 2 pt 2 ps 2
set multiplot layout 1,2
plot 'somedata' using 1:5 t "" w lp ls 9
unset multiplot
pause 90
replot
我如何在 Gnuplot 中实现这一点? 在我的阅读中,我遇到了一种叫做 Lerp/Lerping 颜色的东西,但是我没有使用 Csharp 或 Unity。
输出显示需要 fade/clear 的标记。 主要区别在于只有 1 而不是 9 作为 piture
example of points that need to transition/fade to transparent
根据您的描述,我仍然不清楚您的期望是什么。所以,这里有一个我认为是“雷达效应”的例子,即颜色逐渐消失。
它在 while 循环中设置透明颜色(检查 help while
),您可以通过按 x
(检查 help bind
)停止。
代码当然可以进一步优化,但希望大家能根据自己的需要进行调整。
代码:
### attempt to mimic a radar screen
reset session
# create some test landscape
set xrange [-8:8]
set yrange [-8:8]
set samples 50
set isosamples 50
set contour
set cntrparam level 5
set table $Data
splot (sin(1.3*x)*cos(.9*y)+cos(.8*x)*sin(1.9*y)+cos(y*.2*x))*3
unset table
unset contour
set angle degrees
Angle(dx,dy) = dx==dx && dy==dy ? dx==0 ? dy==0 ? NaN : \
abs(sgn(dy))*180-sgn(dy)*90 : dx<0 ? 180+atan(dy/dx) : \
dy<0 ? atan(dy/dx)+360 : atan(dy/dx) : NaN
r(x,y) = sqrt(x**2 + y**2)
set table $Contour
plot $Data u (Angle(,)):(r(,)) index 1::1
unset table
set size ratio 1
set polar
unset border
set border polar lc "green"
unset xtics
unset ytics
set format r ""
unset raxis
set rtics scale 0
set format t ""
set grid lw 2 lc "green"
set obj 1 rect from screen 0,0 to screen 1,1 fc "black" behind # black background
stop = 0
bind x "stop=1"
$Data <<EOD
45 5
0 4
123 3.5
325 3.5
EOD
unset key
set trange [0:360]
set rrange [0:8]
alpha(a,a0) = int((1-exp(-real(a)/a0))*255)<<24 # transparency "decay"
myBaseColor = 0x00ff00
myColorA(a) = myBaseColor + alpha(a,45) # decay for radar "beam"
AngleDiff(a,b) = b>a ? b-a : 360-a+b
myColorB(a,b) = myBaseColor + alpha(AngleDiff(a,b),220) # decay for data
a=90; step=5
while (!stop) {
a = a<step ? a=a+360-step : a-step
do for [i=0:180] {
set obj 100+i circle at 0,0 size 8 arc [a+i:a+i+2] fs solid noborder fc rgb myColorA(i) behind
}
plot $Data u 1:2:(myColorB(a,)) w p pt 7 lc rgb var, \
$Contour u 1:2:(myColorB(a,)) w l lc rgb var
}
### end of code
结果:(从 wxt 终端使用 ScreenToGif 截屏)