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

Gnuplot技术问题:如何使用数组绘制蜡烛图(Candlestick)

在Gnuplot中使用数组绘制蜡烛图的正确方法

你遇到的问题核心是:Gnuplot中直接plot <数组名> using <固定数组元素>的语法不符合蜡烛图的数据要求——蜡烛图需要单行多列的结构化数据,而直接引用数组名时,Gnuplot会把数组当作单列数据(每个元素对应一行的y值,x为数组索引),导致无法识别蜡烛图所需的多参数列,因此报错“no valid points”。

下面是两种可行的解决方法,实现和数据文件完全一致的蜡烛图效果:

方法1:生成单行临时数据块(最接近你数据文件的用法)

通过set print把数组元素按顺序拼接成一行,写入Gnuplot的临时数据块(以$开头),之后就可以用和数据文件完全相同的plot语法:

array Candle[6]
Candle[1] = 1
Candle[2] = 1
Candle[3] = 1000
Candle[4] = 2000
Candle[5] = 3000
Candle[6] = 4000

# 将数组元素按顺序输出为单行,存入临时数据块$CandleRow
set print $CandleRow
print Candle[1], Candle[2], Candle[3], Candle[4], Candle[5], Candle[6]
set print

set xrange[0:10]
set yrange[0:5000]

# 临时数据块格式和candle.txt完全一致,直接复用原plot命令
plot $CandleRow using 1:3:2:6:5 with candlesticks lt 3 lw 2 title 'Quartiles' whiskerbars

方法2:利用table命令转换数组格式

如果需要处理多行数组数据,可先用set table将数组转换为索引-值的表格形式,再手动指定蜡烛图所需的参数:

array Candle[6]
Candle[1] = 1
Candle[2] = 1
Candle[3] = 1000
Candle[4] = 2000
Candle[5] = 3000
Candle[6] = 4000

# 将数组内容写入临时表格数据块$CandleTable
set table $CandleTable
plot Candle with table
unset table

set xrange[0:10]
set yrange[0:5000]

# 手动指定蜡烛图的各个参数对应数组元素
plot $CandleTable using (Candle[1]):(Candle[3]):(Candle[2]):(Candle[6]):(Candle[5]) with candlesticks lt 3 lw 2 title 'Quartiles' whiskerbars

两种方法都能成功生成你需要的蜡烛图,其中方法1更简洁,完全匹配你原数据文件的使用逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 20:12:41