如何清除透明 pngcairo gnuplot 上按键下方的空间?

问题描述 投票:0回答:2

在白色背景的绘图上,可以使用以下方法轻松清除键下方的空间:

set key opaque

此命令实际上在按键下方绘制一个白色矩形,以便任何绘制的线不再干扰

inside
键。

但是,当输出端子为

pngcairo transparent
时,白色矩形是不需要的。

如何获得完全透明的绘图,并且按键下方的空间被清除(没有干扰的绘图线)?或者我应该使用 gnuplot 提交增强请求?

我现在拥有的东西

应该是什么

我一直在搞GIMP来得到这个。 ImageMagick 也可以。然而,gnuplot 中的本机支持将提供最佳的图形结果。

gnuplot transparency legend
2个回答
1
投票

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

脚本:(适用于 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

结果:(棋盘图案前面)


-1
投票

暂时,我创建了一个几乎空的图,只有一个透明的键。 然后使用 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
© www.soinside.com 2019 - 2024. All rights reserved.