gnuplot:在图的 xy 平面上投影轴标签和抽动

gnuplot: Projecting axes labels and tics on the xy plane of an splot

我想知道是否有一种方法可以使用 gnuplot 将 x 和 y 轴标签和抽动投影到绘图的 xy 平面上。

这个例子展示了我想要的:

这与我目前拥有的对比:

请注意,在顶部图像中,标签似乎在 xy 平面上 "laying",而在底部图像中,它始终垂直于观察者。我想知道是否有一种简单的方法可以使用 gnuplot 执行此操作。提前致谢。

The question is clear, but gnuplot cannot project text on a plane.

– Christoph 18 年 10 月 26 日在 4:36

如果您绝对需要在 xy 平面上投影标签,并且您不害怕繁琐的解决方法,您可以尝试以下方法。

  • gnuplot 可以在 xy 平面上投影图像
  • 创建带有标签的 xy 平面并将其保存为 PNG
  • 使用多图叠加和对齐两个图

但困难来了:您需要通过适当设置边距来完美对齐两个图。我不得不承认,我仍然不明白如何通过一些简单的计算自动对齐它们,而不是手动摆弄边距。除此之外,您还需要相应地设置大小、字体和偏移量。请参阅以下代码作为起点。欢迎改进。祝你好运!

代码:

### labels projected on xy-plane
reset session

# draw the bottom and save as PNG image
SizeX=500; SizeY=500
set term pngcairo size SizeX,SizeY
set output "tb3DLabelXY.png"

set size square
myMargin = 0.13
set margin screen myMargin, screen 1-myMargin, screen myMargin, screen 1-myMargin
set xrange[-10:10]
set xlabel "Precipitation amount, x" font ",20"
set y2range[-10:10]
set y2label "Precipitation amount, y" font ",20" offset -1.5,0
set y2tics rotate by 90 offset 0,-1
set tics font ",16"
unset ytics
set yrange[0:1]
set grid xtics, y2tics lw 2
plot -1 notitle
set output

reset session
set term wxt size 500,500  # or whatever terminal you have
set view equal xy
set view 60,60

set multiplot
    unset xtics
    unset ytics
    unset ztics
    unset xlabel    
    myMargin = 0.17
    # margins l,r,b,t
    set margins screen myMargin, screen 1-myMargin, screen myMargin, screen 1-myMargin
    set zrange[0:200]
    unset border
    splot 'tb3DLabelXY.png' binary filetype=png  with rgbimage notitle

    set border 4095
    set isosamples 20,20
    set xyplane at -100
    # margins l,r,b,t
    set margins screen 0.255, screen 0.74, screen 0.04, screen 0.81
    set xrange[-10:10]
    set yrange[-10:10]
    set zrange[-100:100]
    set ztics -80,40
    set hidden3d
    splot x*y

unset multiplot
### end of code

结果: