Gnuplot技术咨询:绘制2D与3D图并分别保存为指定CairoLaTeX格式.tex文件的脚本正确性排查
你的Gnuplot脚本问题分析
嘿,我帮你检查了下你的Gnuplot脚本,发现几个小问题,会导致你无法正确生成想要的.tex文件,具体问题和修正后的版本如下:
存在的问题
- 3D图的输出顺序错误:你当前是先执行
splot绘图命令,再设置终端和输出文件,Gnuplot按顺序执行代码,这会导致3D图的内容不会被写入目标文件,必须先指定输出终端和路径,再执行绘图命令。 - 预绘制终端未生效:你注释掉了
set terminal unknown,这会让预绘制的内容在当前终端显示(比如弹出图形窗口),但我们预绘制的目的只是获取坐标轴极值,不需要显示,所以要启用这行命令。 - 单位占位符未修正:
xlabel里的[s?]和ylabel里的[m?]是未替换的占位符,生成的LaTeX文件里会保留问号,建议改成实际的单位(比如[s]和[m])。 - 冗余操作:生成2D图后不需要额外的“重置终端”步骤,直接为3D图重新配置终端和输出即可。
修正后的脚本
# 通用设置 set tics font ", 14" set tmargin at screen 0.7 set key at screen 0.3, 0.8 font ",14" spacing 1.3 samplen 0.8 box opaque # 将边框置于背景层 set border lw 0.1 back set xlabel '$t$ [s]' offset 1.7; set ylabel '$Position$ [m]' offset -1; # 预绘制以获取极值(无显示) set terminal unknown plot "labo2-mag/data/output.out" using 1:2 with points pointtype 6 lc rgb "red" title '$x(t)$', \ "" using 1:3 with points pointtype 8 lc rgb "green" title '$y(t)$', \ "" using 1:4 with points pointtype 6 lc rgb "blue" title '$z(t)$' # 生成2D图并保存为tex文件 set terminal cairolatex pdf size 10cm, 10cm set out 'labo2-mag/latex/position-x-y-over-time.tex' MAX_Y=GPVAL_Y_MAX MIN_Y=GPVAL_Y_MIN MAX_X=GPVAL_X_MAX MIN_X=GPVAL_X_MIN set xrange [MIN_X-(MAX_X-MIN_X)*0.1:MAX_X+(MAX_X-MIN_X)*0.01] set yrange [MIN_Y-(MAX_Y-MIN_Y)*0.05:MAX_Y+(MAX_Y-MIN_Y)*0.05] replot # 生成3D图并保存为tex文件 set terminal cairolatex pdf size 10cm, 10cm set out 'labo2-mag/latex/position-3d.tex' splot "labo2-mag/data/output.out" using 2:3:4 with points pointtype 6 lc rgb "red" title '$pos(t)$'
内容的提问来源于stack exchange,提问作者sleepydrmike
相关产品推荐
相关产品推荐

