Gnuplot pm3d map:自定义x2tics、y2tics的极图绘制技术问询
在Gnuplot pm3d Map中添加独立的x2tics和y2tics
我来帮你搞定在pm3d map里配置独立的x2(顶部x轴)和y2(右侧y轴)刻度的问题!结合你现有的极坐标转换代码,咱们一步步调整:
核心思路
Gnuplot默认关闭x2和y2轴,你需要先启用它们,再根据需求自定义刻度值和标签——完全可以和主x/y轴的刻度逻辑不同,比如对应不同的物理量、角度单位(弧度/度)或者参数范围。
分步实现
1. 启用并自定义x2tics
首先用set x2tics开启顶部x轴,然后像设置主xtics一样自定义刻度。比如如果主x轴对应β=180°,你可以让x2轴对应β从0°到180°的反向刻度:
# 开启x2轴并设置自定义刻度 set x2tics("{/Symbol b}=0{/Symbol \260}" 90, "{/Symbol b}=90{/Symbol \260}" 0, "{/Symbol b}=180{/Symbol \260}" -90) # 可选:设置x2轴范围和主x轴一致(避免刻度错位) set x2range [-90:90]
2. 启用并自定义y2tics
同理,用set y2tics开启右侧y轴,比如把主y轴的角度(度)转换成弧度作为y2刻度:
# 开启y2轴并设置弧度刻度标签 set y2tics("-π/2" -90, "-π/4" -45, "0" 0, "π/4" 45, "π/2" 90) # 可选:设置y2轴范围和主y轴一致 set y2range [-90:90]
3. 整合到你的完整代码里
把上述配置加入你原有的代码中,补全你截断的splot命令(假设是将输入的两个角度转换为极坐标投影的笛卡尔坐标),完整示例如下:
# 角度-弧度转换函数 degtorad(x)=x/180*pi radtodeg(x)=x/pi*180 # pm3d基础配置 set pm3d map set pm3d interpolate 0,0 set logscale zcb set palette model RGB rgbformulae 33,13,10 set size ratio 1 # 主x/y轴刻度(保留你的原有设置) set xtics("{/Symbol b}=180{/Symbol \260}" 0) set ytics("0" -90, "10" -80, "20" -70, "30" -60, "40" -50, "50" -40, "60" -30, "70" -20, "80" -10, "90" 0, "80" 10, "70" 20, "60" 30, "50" 40, "40" 50, "30" 60, "20" 70, "10" 80, "0" 90) # 新增x2/y2轴配置 set x2tics("{/Symbol b}=0{/Symbol \260}" 90, "{/Symbol b}=90{/Symbol \260}" 0, "{/Symbol b}=180{/Symbol \260}" -90) set x2range [-90:90] set y2tics("-π/2" -90, "-π/4" -45, "0" 0, "π/4" 45, "π/2" 90) set y2range [-90:90] # 补全的splot命令(根据你的极坐标转换逻辑) splot[-90:90][-90:90] 'TSC3.txt' u (radtodeg(cos(degtorad($1+90))*degtorad(90-$2))):(radtodeg(sin(degtorad($1+90))*degtorad(90-$2))):3 with pm3d
关键注意点
- 如果你的x2/y2轴需要对应不同的数据范围,直接修改
set x2range/set y2range即可,不用和主轴一致。 - 刻度标签支持Gnuplot的特殊字符(比如希腊字母),用法和主轴完全相同。
- 若要隐藏主轴或双轴的刻度线/标签,可以在
set xtics后加nomirror(比如set x2tics nomirror)避免刻度重复显示。
内容的提问来源于stack exchange,提问作者Tom Solid
相关产品推荐
相关产品推荐

