【问题标题】:Gnuplot image on axis轴上的 Gnuplot 图像
【发布时间】:2013-08-23 08:23:43
【问题描述】:

我正在尝试通过某种环境来模拟某种进展。 x 轴将表示环境中的位置(基于 x 坐标)。

为了清楚起见,我想要我的情节的 x 轴上的环境图像(基于 .png)(环境相当宽且不那么高,所以它应该看起来不错) ,基本上作为 xtics/x 轴标签。

您对如何解决这个问题有什么建议吗?

提前致谢!

【问题讨论】:

  • 您想包含这个 png,还是从中获取一些数据?在任何情况下,您都可以使用例如plot 'file.png' binary filetype=png 并且可能使用 dxdyorigin 来调整缩放比例:例如plot 'file.png' binary filetype=png dx=0.1 dy=0.01 origin=(10,10)
  • 我不需要从中检索任何数据。我试过你描述的,我可以在那里得到图片,但有一些问题。首先,由于某种原因,由于我添加的颜色框,颜色被搞砸了。我尝试了很多变种,但无济于事。此外,它只允许我将图片放在绘图内,而不是在实际轴上。不过没关系,就是不那么漂亮了。
  • 忘了说,你必须使用with rgbimage。我会在稍后发布答案。

标签: gnuplot axis-labels


【解决方案1】:

您可以在一个plot 命令或multiplot 中同时绘制图像和数据。第一个变体更简单,但图像在绘图内部,另一个稍微复杂一些,但允许任意定位“轴图像”。

轴的虚拟图像“gradient.png”是

一个绘图命令:

set yrange[0:1]
set xrange[0:1]
plot 'gradient.png' binary filetype=png dx=0.0015 dy=0.002 with rgbimage t '',\
     x**2

结果是:

使用多图

set yrange[0:1]
set xrange[0:1]

set lmargin at screen 0.1
set rmargin at screen 0.98
set tmargin at screen 0.98
set bmargin at screen 0.2
set xtics offset 0,-1.5
set xlabel 'xlabel' offset 0,-1.5
set ylabel 'ylabel'

set multiplot
plot x**2

set tmargin at screen 0.2
set bmargin at screen 0.15
unset border
unset tics
unset xlabel
unset ylabel
unset key
set autoscale xy
plot 'gradient.png' binary filetype=png with rgbimage 
unset multiplot

如您所见,这需要更多的努力。解释细节:

  • 您必须设置明确的边距,以便轴图像可以正好放置在主图下方。

  • 在绘制坐标轴图像之前,您必须删除ticslabels,将范围重置为autoscale 等(因此您还必须设置固定的lmarginrmargin)。

  • 要绘制图像本身,请使用绘图样式with rgbimage

  • 您必须微调xticsxlabel 偏移量以及marings。

生成的图像是:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-22
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    相关资源
    最近更新 更多