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

如何在gnuplot中结合xtics与xticlabels设置X轴刻度

Gnuplot绘制K线图:X轴每5天显示日期刻度的解决方案

在绘制包含节假日/周末缺口的K线数据时,常会遇到这些问题:

  • 用xticlabels设置日期标签后,set xtics 5完全失效,无法控制刻度间隔
  • 直接把X轴设为日期类型,会因为数据缺口出现绘图断层或日期对应错误

针对这些问题,以下提供两种可行解决方法,适用数据集字段为Count,Date,Open,High,Low,Close:

方法一:用自定义函数筛选刻度标签

定义函数仅给每第N个数据点生成日期标签,其余点留空,以此实现间隔显示。

# 定义函数:每5个数据点显示一次日期标签
everyNth(n) = int($0) % n == 0 ? strftime("%Y-%m-%d", strptime("%Y-%m-%d", $2)) : ""

# 设置K线图样式
set style data candlesticks
set style fill solid border -1
set boxwidth 0.8 relative

# 绘制K线,用Count作为X轴避免缺口,通过函数控制标签显示
plot 'data.csv' using 1:3:4:5:6:xtic(everyNth(5)) notitle with candlesticks

说明:

  • $0是gnuplot内置行号(从0开始计数),通过取模判断是否为目标点
  • 用Count字段(第一列)作为X轴,保证数据连续无断层
  • 非目标点返回空字符串,不会生成多余刻度

方法二:通过额外绘图层添加间隔刻度

先绘制无刻度的K线图,再单独用一个图层绘制间隔5天的日期标签。

# 设置K线图样式
set style data candlesticks
set style fill solid border -1
set boxwidth 0.8 relative

# 关闭默认X轴刻度和标签
set xtics nomirror noenhanced
unset xtics

# 先绘制K线图,再叠加间隔刻度标签
plot 'data.csv' using 1:3:4:5:6 notitle with candlesticks, \
     'data.csv' using 1:(0):xtic(2) every 5 notitle with labels offset 0,-1.2

说明:

  • 第一个plot仅绘制K线,不显示任何X轴刻度
  • 第二个plot用every 5筛选数据点,在X轴对应位置绘制日期标签
  • offset 0,-1.2用于调整标签位置,避免和K线图重叠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 23:28:14