如何清除透明 pngcairo gnuplot 上键下方的 space?

How to clear the space below a key on a transparent pngcairo gnuplot?

在白色背景的图上,键下方的 space 可以很容易地清除:

set key opaque

此命令实际上在键下方绘制了一个白色矩形,因此任何绘制的线条都不再干扰 inside 键。

然而,当输出端为pngcairo transparent时,白色矩形是不需要的。

我如何获得一个完全透明的绘图,其中 space 清除了键下方(没有干扰绘图线)?还是我应该向 gnuplot 提交增强请求?

我目前拥有的

应该是什么

我一直在胡思乱想 GIMP to get this. ImageMagick 也可以。但是,gnuplot 中的本机支持将提供最佳图形结果。

暂时,我创建了一个几乎空的图,只有一个透明键。 然后使用 GIMP.

中的图层将该图与包含不透明键的图手动组合

以下是如何在每个数据集的原点创建一个只有一个数据点的图。

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

由于您不能用透明矩形覆盖一些可见的线,您只需过滤掉“不需要的”数据。

代码:(与 gnuplot 5 一起使用。0.x 并且有一些改编可能也适用于早期版本)

### blank out data 
reset session

set term pngcairo size 640,384 font ",10" transparent
set output "SO35676112.png"

# create some test data
f(x,a,b) = a*(x-b)**2
set print $Data
    do for [a=1:10] {
        do for [x=0:100] {
            print sprintf("%g %g", x/2., f(x/2.,a*0.1,25))
        }
        print ""; print ""
    }
set print

set yrange [0:150]
set key at graph 0.95, 0.9

定义您的过滤器函数并通过值 (x1,y1,x2,y2)(不幸的是手动)定义一个矩形,您希望在其中清空数据。

x1 = 38
y1 = 61
x2 = 48
y2 = 138
myFilter(x,y) = x>x1 && x<x2 && y>y1 && y<y2 ? NaN : y

plot for [i=1:10] $Data u 1:(myFilter(,)) index i-1 w l lw 2 ti sprintf("%g MHz",i)
set output
### end of code

结果:(棋盘格前)