如何解决在 Gnuplot 中是否可以在曲面图下的 xyplane 上绘制二维图?
我正在尝试创建类似于这些图的内容:
我有表面图和我想放在它下面的内容,现在分别绘制:
我尝试将二维图像绘制为曲面图中的二进制图,但每个像素都被解释为坐标系中的一个整体,这是不正确的,它最终会复制坐标轴和图标题,等等。同样,gnuplot 的 xyplane 不一定在 z=0,所以只是使用 splot 通常使用 splot 绘图,z 值为 0 也不会做我想要的。
到目前为止,这些是我的绘图文件:
二维散点图:
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,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"
解决方法
也许是这样的?可能需要根据您的数据进行调整并进一步微调。
代码:
procedure TGetWebcam.Execute;
var
WCVideo: TVideoImage;
TmpList: TStringList;
JpgShot: TJPEGImage;
begin
CoInitialize(nil);
try
WCVideo := TVideoImage.Create;
try
TmpList := TStringList.Create;
try
WCVideo.GetListOfDevices(TmpList);
if TmpList.Count = 0 then Exit;
if WCVideo.VideoStart(TmpList[0]) <> 0 then Exit;
TmpList.Clear;
WCVideo.GetListOfSupportedVideoSizes(TmpList);
if TmpList.Count = 0 then Exit;
WCVideo.SetResolutionByIndex(ScnResId);
Sleep(5000);
JpgShot := TJPEGImage.Create;
try
WCVideo.GetJPG(JpgShot);
JpgShot.SaveToFile('c:\test.jpg');
finally
JpgShot.Free;
end;
finally
WCVideo.VideoStop;
end;
finally
TmpList.Free;
end;
finally
WCVideo.Free;
end;
finally
CoUninitialize;
end;
end;
结果:
,尽管 gnuplot 自动选择的基准平面可能不明显,但很可能使用命令 set xyplane at <z-value>
将其设置在您喜欢的任何位置。这是改编自在线演示集的示例(random.dem 中的第三幅图)
并非 3D 也支持 2D 绘图使用的所有绘图样式,但其中很多都支持。
#
# 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。