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