You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Gnuplot如何通过数据集关联x1与x2轴而非函数?

Gnuplot实现双X轴(温度+时间)及规整温度刻度

核心思路

利用温度与时间的单调对应关系,通过插值将规整温度刻度映射到对应的时间值,分别作为x1(温度)和x2(时间)轴的刻度,同时绘制物理量C随温度(本质随时间)的变化曲线,完全支持刻度样式自定义。

具体实现代码

# 1. 配置文件与插值函数
datafile = 'test_data.txt'  # 替换为你的测试数据文件名
# 定义温度转时间的插值函数(温度列是第2列,时间列是第1列)
stats datafile using 2:1 nooutput
T_min = STATS_min_x
T_max = STATS_max_x
time(T) = interpolate(T, datafile, 2, 1)

# 2. 设置x1轴(温度):规整刻度
set xtics 300, 50, 600  # 起始300,步长50,终止600,可按需调整
set xlabel '温度' font "Arial,12"
set xrange [T_min:T_max]
set xtics format "%.0f"  # 整数刻度显示,匹配示例样式

# 3. 设置x2轴(时间):映射温度对应的时间刻度
set x2tics ()  # 清空默认刻度
# 循环生成x2轴刻度,与x1的规整温度一一对应
do for [T=300:600:50] {
    t_val = time(T)
    set x2tics add (sprintf("%.1f", t_val) T)  # 时间保留1位小数,可调整格式
}
set x2label '时间' font "Arial,12"
set x2tics font "Arial,10" rotate 45  # 自定义标签字体、旋转角度

# 4. 设置y轴与图表样式
set ylabel '物理量C' font "Arial,12"
set yrange [*:*]
set style line 1 lw 2 lc rgb '#0066cc'  # 曲线粗细、颜色
set grid xtics ytics  # 显示网格线
set key off

# 5. 绘图
plot datafile using 2:3 with lines ls 1

关键说明

  • 插值函数interpolate:gnuplot 5.0+版本内置,可根据温度值自动查找对应时间,确保x2轴刻度与x1轴温度严格对应;旧版本可手动实现线性插值逻辑。
  • 刻度样式控制:通过set xtics/x2tics font、rotate、format等参数,完全自定义刻度的字体、角度、显示格式,解决原方案无法控制样式的问题。
  • 数据兼容性:适用于大量数据点,无需手动标注每个点的标签,自动完成温度-时间的映射。

内容的提问来源于stack exchange,提问作者atapaka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:05:36