在白色背景的绘图上,可以使用以下方法轻松清除键下方的空间:
set key opaque
此命令实际上在按键下方绘制一个白色矩形,以便任何绘制的线不再干扰
inside
键。
但是,当输出端子为
pngcairo transparent
时,白色矩形是不需要的。
如何获得完全透明的绘图,并且按键下方的空间被清除(没有干扰的绘图线)?或者我应该使用 gnuplot 提交增强请求?
我一直在搞GIMP来得到这个。 ImageMagick 也可以。然而,gnuplot 中的本机支持将提供最佳的图形结果。
由于您无法用透明矩形覆盖一些可见线,因此您只需过滤掉“不需要的”数据即可。
脚本:(适用于 gnuplot>=5.0.0,并且进行了一些调整,可能也适用于早期版本)
### filter out data
reset session
FILE = "SO35676112.dat"
# create some test data
set table FILE
plot [0:50] for [a=1:10] '+' u (x):(a*0.1*(x-25)**2)
unset table
set term pngcairo size 640,384 font ",10" transparent
set output "SO35676112.png"
set yrange [0:150]
set key at graph 0.95, 0.9
# Define your filter function and define a rectangle via the values (x1,y1,x2,y2)
# (unfortunately manually) where you want to blank out your data.
x1 = 38
y1 = 61
x2 = 48
y2 = 138
myFilter(x,y) = x>x1 && x<x2 && y>y1 && y<y2 ? NaN : y
plot for [i=0:9] FILE u 1:(myFilter($1,$2)) index i w l lw 2 ti sprintf("%g MHz",i)
set output
### end of script
结果:(棋盘图案前面)
暂时,我创建了一个几乎空的图,只有一个透明的键。 然后使用 GIMP 中的图层将该图与包含不透明键的图手动组合。但是,我可以使用 ImageMagick 自动执行此操作,以获得完全自动化的解决方案。
以下是如何为每个数据集创建一个在原点仅包含一个数据点的绘图。
plot \
"<echo '0 1'" ti "14.000 MHz" ax x1y1 w lines ls 1, \
"<echo '0 1'" ti "14.174 MHz" ax x1y1 w lines ls 1 lw 2, \
"<echo '0 1'" ti "14.350 MHz" ax x1y1 w lines ls 1, \
"<echo '0 1'" ti "21.000 MHz" ax x1y1 w lines ls 4, \
"<echo '0 1'" ti "21.224 MHz" ax x1y1 w lines ls 4 lw 2, \
"<echo '0 1'" ti "21.450 MHz" ax x1y1 w lines ls 4, \
"<echo '0 1'" ti "28.000 MHz" ax x1y1 w lines ls 3, \
"<echo '0 1'" ti "28.500 MHz" ax x1y1 w lines ls 3 lw 2, \
"<echo '0 1'" ti "29.100 MHz" ax x1y1 w lines ls 3