在Gnuplot中,是否可以在xyplane上的曲面图下绘制2D图?

在Gnuplot中,是否可以在xyplane上的曲面图下绘制2D图?,plot,gnuplot,Plot,Gnuplot,我试图创建类似于这些情节的东西: 我有表面图,我想在下面单独绘制: 我尝试在曲面图中将2D图像绘制为二进制图,但每个像素在坐标系中被解释为一个整体,这是不正确的,它最终会复制坐标轴和绘图标题等。此外,gnuplot的xyplane不一定在z=0处,因此,仅使用z值为0的splot正常绘图也不能满足我的要求 这些是迄今为止我的打印文件: 二维散点图: set terminal png enhanced size 8000, 4800 truecolor font "arial,60

我试图创建类似于这些情节的东西:

我有表面图,我想在下面单独绘制:

我尝试在曲面图中将2D图像绘制为二进制图,但每个像素在坐标系中被解释为一个整体,这是不正确的,它最终会复制坐标轴和绘图标题等。此外,gnuplot的xyplane不一定在z=0处,因此,仅使用z值为0的splot正常绘图也不能满足我的要求

这些是迄今为止我的打印文件:

二维散点图:

set terminal png enhanced size 8000, 4800 truecolor font "arial,60"
set encoding utf8
set output outfile

set autoscale fix

set border lw 3
set style fill transparent solid 0.075 noborder
set style circle radius 0.03

set title plotTitle

plot sample1 u 1:2 w circles notitle,\
     sample2 u 1:2 w circles notitle,\
     $ContourTable w lines lw 6 lc rgb 'black' notitle,\
     keyentry w circles fill solid 1.0 noborder lc 1 title "ω_1",\
     keyentry w circles fill solid 1.0 noborder lc 2 title "ω_2"
曲面图:

set terminal png enhanced size 8000, 4800 truecolor font "arial,60"
set encoding utf8
set output outfile

set autoscale fix
set border lw 3
set title plotTitle
set isosamples 100
set pm3d at s explicit hidden3d
unset hidden3d
set palette model RGB define (1 "dark-violet", 2 "#009e73")

splot pdfFile u 1:2:3:4 w pm3d lc rgb "black"

也许是这样的?可能需要根据您的数据进行调整并进一步微调

代码:

### surface plot with contour
reset session

GaussW3D(x,y,x0,y0,A,FWHM) = A * exp(-(x-x0)**2/(2*(FWHM/(2*sqrt(2*log(2))))**2)) *\
                                 exp(-(y-y0)**2/(2*(FWHM/(2*sqrt(2*log(2))))**2))
                                 
set samples 40
set isosamples 40

f(x,y) = GaussW3D(x,y,4,4,1,5) + GaussW3D(x,y,0,0,1.5,3)
set contour base
set cntrparam levels 10
set hidden3d
set xyplane at -2
set ztics 0.5

splot sample [-4:10][-7:10] '++' u 1:2:(f(x,y)) w l

### end of code
结果:

### surface plot with contour
reset session

GaussW3D(x,y,x0,y0,A,FWHM) = A * exp(-(x-x0)**2/(2*(FWHM/(2*sqrt(2*log(2))))**2)) *\
                                 exp(-(y-y0)**2/(2*(FWHM/(2*sqrt(2*log(2))))**2))
                                 
set samples 40
set isosamples 40

f(x,y) = GaussW3D(x,y,4,4,1,5) + GaussW3D(x,y,0,0,1.5,3)
set contour base
set cntrparam levels 10
set hidden3d
set xyplane at -2
set ztics 0.5

splot sample [-4:10][-7:10] '++' u 1:2:(f(x,y)) w l

### end of code

尽管gnuplot自动选择的基准面可能不明显,但使用命令
set xyplane at
可以在任何地方设置它。下面是一个改编自在线演示集的示例(中的第三个绘图)

并非2D打印使用的所有打印样式在3D中都受支持,但其中许多样式都受支持

#
# The surface plot shows a two variable multivariate probability"
# density function.  On the x-y plane are some samples of the random"
# vector and a contour plot illustrating the correlation, which in"
# this case is zero, i.e. a circle.  (Easier to view in map mode.)"
#
nsamp = 50

# Generate N random data points.
set print $random
do for [i=1:nsamp] {
    print sprintf("%8.5g %8.5g", invnorm(rand(0)), invnorm(rand(0)))
}
unset print
#
unset xlabel
unset ylabel
unset zlabel
set parametric
tstring(n) = sprintf("%d random samples from a 2D Gaussian PDF with\nunit variance, zero mean and no dependence", n)
set title tstring(nsamp)
unset key
set hidden3d
set contour
set view 68, 28, 1, 1
set cntrparam levels discrete 0.1
unset clabel
set xrange [-3:3]
set yrange [-3:3]
set zrange [-0.2:0.2]
set ztics 0,0.05
set urange [-3:3]
set vrange [-3:3]
set isosamples 30

BASE = -0.2
set xyplane at BASE
splot u,v,( 1/(2*pi) * exp(-0.5 * (u**2 + v**2)) ) with line lc rgb "black", \
   $random using 1:2:(BASE) with points pointtype 7 lc rgb "slategray" nocontour

我很困惑。从何处获取曲面数据,即
pdfFile
?这些数据看起来如何?这是二维散射数据的密度图吗?你能举个例子吗?@theozh是的,当然。表面图是从散射图中抽取样本的联合密度的曲线图,我从C++程序中生成。曲面的着色基于该点上哪个类的边缘密度更大。这就是示例
pdfFile
的样子:。我知道我可以在xyplane上绘制等高线,但我想知道我是否可以绘制任意二维图,如散点图。在原始绘图中,线图不是等高线-它们是椭圆,显示分布的主轴和通过外部程序找到的决策边界。@OttovonBisquick ok,那么这些椭圆的数据是什么样子的?请给出一些示例数据。可能是两列中的简单x,y值?然后,如Ethan所示,只需在括号中添加一个固定的z坐标,例如,
splot'YourFile'u1:2:(YourZLevel)w l