如何在gnuplot中绘制带颜色区分及日期轴的Renko图?
在Gnuplot中实现带颜色区分和自适应日期轴的Renko图完全可行
核心思路拆解
- 涨跌砖块颜色区分:通过判断砖块的价格变化(或数据中预存的涨跌标记),给上涨砖设绿色、下跌砖设红色,用实心填充样式。
- 保持水平间距的日期轴:用连续序号(或砖块的水平坐标基准)作为x轴的底层坐标保证砖块间距一致,再将日期标签绑定到对应位置,让Gnuplot自动适配显示密度。
具体脚本示例
假设你的data.dat格式为每行存储矩形对角坐标+日期:左x坐标 下y坐标 右x坐标 上y坐标 日期字符串,示例数据如下:
10 4200 20 4210 "2024-01-01" 20 4210 30 4220 "2024-01-02" 30 4220 40 4210 "2024-01-03"
对应的Gnuplot脚本:
# 输出设置 set terminal pngcairo enhanced font 'Arial,10' set output 'renko_final.png' # 坐标轴样式 set xlabel '日期' set ylabel '标普500价格' set xtics rotate by 45 right # 旋转日期标签避免重叠 set grid ytics # 可选:添加y轴网格辅助读数 set style fill solid 1.0 # 砖块实心填充 # 绘制Renko砖块+绑定日期轴 plot 'data.dat' \ # 绘制涨跌砖块:判断上y>下y则绿色,否则红色 using 1:2:3:4:($4>$2 ? rgb('#00cc00') : rgb('#cc0000')) \ with rectangles linecolor rgb var notitle, \ # 将日期标签绑定到砖块的水平中心位置,用隐藏点实现xtics '' using (($1+$3)/2):(0):xtic(5) with points pointtype 0 notitle
关键细节说明
- 颜色控制:通过
$4>$2判断砖块是上涨(上边界>下边界)还是下跌,用linecolor rgb var调用对应的颜色值;如果你的数据里已经有涨跌标记列(比如第6列是1/0),可以直接替换成using ...:6简化判断。 - 日期轴自适应:用砖块的水平中点
($1+$3)/2作为日期标签的x位置,Gnuplot会自动根据画布宽度调整显示的日期数量,不会挤压砖块间距;pointtype 0是隐藏点,只用来生成xtics标签。
内容的提问来源于stack exchange,提问作者nathanvy
相关产品推荐
相关产品推荐

