Gnuplot:CSV文件日期X轴加密货币数据绘图问题
解决Gnuplot时间轴格式与缩放问题
你的问题出在两个关键地方:时间格式解析错误和错误使用行号作为X轴数据,导致刻度格式不对、X轴无法按实际时间缩放。下面是修正后的完整脚本,以及详细的解释:
修正后的Gnuplot脚本
set key inside bottom right set title 'Revenues' set datafile separator ',' set ylabel 'EUR' set grid # 配置时间轴核心设置 set xdata time # 严格匹配CSV中的日期时间格式(注意时间部分是冒号分隔!) set timefmt '%Y-%m-%d %H:%M:%S' # 设置X轴标签为你要的短格式:两位数年份/日/月(例如18/20/01) set format x "%y/%d/%m" # 旋转刻度标签避免重叠 set xtics rotate # 绘图时用第一列(日期)作为X轴,第2-5列作为Y轴 plot for [col=2:5] "data.txt" using 1:col with lines lw 2 title columnheader
关键修正点说明
时间格式匹配
你之前的set timefmt '%Y-%m-%d %H-%M-%S'是错误的——CSV里的时间部分是HH:MM:SS(冒号分隔),不是减号,Gnuplot无法正确解析时间字符串,自然显示不出正确的格式。修正后%H:%M:%S才能匹配数据中的时间格式。使用实际时间作为X轴
你之前用using 0:col,这里的0是Gnuplot默认的行号,不是时间数据!哪怕你把最后一条数据改成2019年,行号还是按顺序递增,X轴只会按行数缩放,完全忽略时间跨度。改成using 1:col后,Gnuplot会读取第一列的时间值,自动根据时间间隔缩放X轴,2019年的数据会自然显示在右侧对应的位置。去掉多余的
:xtic(1)
启用set xdata time后,Gnuplot会自动根据时间间隔生成合理的刻度标签,手动指定:xtic(1)会强制每个数据点都显示标签,不仅容易重叠,还会干扰自动缩放逻辑,所以不需要加这个参数。
额外优化(可选)
如果想要更精准控制X轴刻度的间隔,比如每隔1天显示一个标签,可以添加:
# 设置X轴每隔86400秒(1天)显示一个刻度 set xtics timedate 86400
或者指定起始时间和间隔:
set xtics "2018-01-20", 86400
内容的提问来源于stack exchange,提问作者C.M.
相关产品推荐
相关产品推荐

