gnuplot:如何在图形中插入图像?
gnuplot: How to insert image in graph?
我在 Ubuntu 18.04 的 WSL 中使用 gnuplot 5.2,我正在尝试在我生成的图形中拟合 png 图像。
我正在使用的名为“data_sof”的数据是:
loc
Exp
Measured
0.
3
3.2
0.05
1
1.1
0.10
1.5
1.33
0.15
5.34
5.8
0.20
4.26
5.22
0.25
5.70
4.88
0.30
6.21
6.17
0.35
5.15
5.10
我用来绘制数据的代码(作为脚本)如下:
set terminal pngcairo font "helvetica,20" size 1000, 800
set border lw 1.5
set tmargin 1.5
set rmargin 20
set xrange [0:7]
set yrange [0:0.45]
set grid
set output "stack.png"
plot \
"data_sof" u 2:1 w p ps 1.5 pt 2 lc rgb "#3D554F", \
"data_sof" u 3:1 w p ps 1.5 pt 4 lc rgb "#56B4E9"
生成的图表如下所示:
我想做的是将图像 image.png 放在主要情节旁边的专用白色 space 上。
我试过如下附加代码:
plot \
"data_sof" u 2:1 w p ps 1.5 pt 2 lc rgb "#3D554F" notitle, \
"data_sof" u 3:1 w p ps 1.5 pt 4 lc rgb "#56B4E9" notitle, \
"image.png" binary filetype=png with rgbalpha notitle
但我得到以下输出,这不是预期的。
我也试过用 dx 和 dy 关键字缩放图像但没有成功。
image.png可以在这里找到:image.png
编辑:
使用不同工具生成的所需输出是:
非常感谢任何帮助!
我的理解是,如果您“绘制”图像,则它必须在图表内。对于您的情况,您可以使用 multiplot
,检查 help multiplot
。您只需设置原点和大小并删除第二个图的边框和标签。此外,为了避免失真,您将第二个绘图的绘图大小比率设置为与您的图像相同(在您的情况下为 973 x 673 像素)。检查以下示例作为进一步调整的起点。
代码:
### add/plot image next to graph
reset session
$Data <<EOD
0. 3 3.2
0.05 1 1.1
0.10 1.5 1.33
0.15 5.34 5.8
0.20 4.26 5.22
0.25 5.70 4.88
0.30 6.21 6.17
0.35 5.15 5.10
EOD
unset key
set multiplot
set origin 0,0
set size 0.6,1.0
set grid x,y
plot $Data u 2:1 w p ps 1.5 pt 2 lc "red",\
'' u 3:1 w p ps 1.5 pt 4 lc "blue"
set origin 0.6,0.1
set size 0.4,0.5
set border 0
unset tics
unset label
set size ratio 973./673
plot "image.png" binary filetype=png with rgbalpha
unset multiplot
### end of code
结果:
我知道您指定了 gnuplot 5.2 版,但为了完整起见,我要指出在 5.4 版中有单独的数据结构类型 pixmap
保存要放置在任意位置的图像或剧情外
set pixmap 1 "image.png"
set pixmap 1 at screen 0.75, graph 0.0 width screen 0.2
set rmargin at screen 0.7
plot "data_sof" u 2:1 w p ps 1.5 pt 2 lc rgb "#3D554F" notitle, \
"data_sof" u 3:1 w p ps 1.5 pt 4 lc rgb "#56B4E9" notitle
我在 Ubuntu 18.04 的 WSL 中使用 gnuplot 5.2,我正在尝试在我生成的图形中拟合 png 图像。
我正在使用的名为“data_sof”的数据是:
loc | Exp | Measured |
---|---|---|
0. | 3 | 3.2 |
0.05 | 1 | 1.1 |
0.10 | 1.5 | 1.33 |
0.15 | 5.34 | 5.8 |
0.20 | 4.26 | 5.22 |
0.25 | 5.70 | 4.88 |
0.30 | 6.21 | 6.17 |
0.35 | 5.15 | 5.10 |
我用来绘制数据的代码(作为脚本)如下:
set terminal pngcairo font "helvetica,20" size 1000, 800
set border lw 1.5
set tmargin 1.5
set rmargin 20
set xrange [0:7]
set yrange [0:0.45]
set grid
set output "stack.png"
plot \
"data_sof" u 2:1 w p ps 1.5 pt 2 lc rgb "#3D554F", \
"data_sof" u 3:1 w p ps 1.5 pt 4 lc rgb "#56B4E9"
生成的图表如下所示:
我想做的是将图像 image.png 放在主要情节旁边的专用白色 space 上。
我试过如下附加代码:
plot \
"data_sof" u 2:1 w p ps 1.5 pt 2 lc rgb "#3D554F" notitle, \
"data_sof" u 3:1 w p ps 1.5 pt 4 lc rgb "#56B4E9" notitle, \
"image.png" binary filetype=png with rgbalpha notitle
但我得到以下输出,这不是预期的。
我也试过用 dx 和 dy 关键字缩放图像但没有成功。
image.png可以在这里找到:image.png
编辑:
使用不同工具生成的所需输出是:
非常感谢任何帮助!
我的理解是,如果您“绘制”图像,则它必须在图表内。对于您的情况,您可以使用 multiplot
,检查 help multiplot
。您只需设置原点和大小并删除第二个图的边框和标签。此外,为了避免失真,您将第二个绘图的绘图大小比率设置为与您的图像相同(在您的情况下为 973 x 673 像素)。检查以下示例作为进一步调整的起点。
代码:
### add/plot image next to graph
reset session
$Data <<EOD
0. 3 3.2
0.05 1 1.1
0.10 1.5 1.33
0.15 5.34 5.8
0.20 4.26 5.22
0.25 5.70 4.88
0.30 6.21 6.17
0.35 5.15 5.10
EOD
unset key
set multiplot
set origin 0,0
set size 0.6,1.0
set grid x,y
plot $Data u 2:1 w p ps 1.5 pt 2 lc "red",\
'' u 3:1 w p ps 1.5 pt 4 lc "blue"
set origin 0.6,0.1
set size 0.4,0.5
set border 0
unset tics
unset label
set size ratio 973./673
plot "image.png" binary filetype=png with rgbalpha
unset multiplot
### end of code
结果:
我知道您指定了 gnuplot 5.2 版,但为了完整起见,我要指出在 5.4 版中有单独的数据结构类型 pixmap
保存要放置在任意位置的图像或剧情外
set pixmap 1 "image.png"
set pixmap 1 at screen 0.75, graph 0.0 width screen 0.2
set rmargin at screen 0.7
plot "data_sof" u 2:1 w p ps 1.5 pt 2 lc rgb "#3D554F" notitle, \
"data_sof" u 3:1 w p ps 1.5 pt 4 lc rgb "#56B4E9" notitle