如何实现Gnuplot混合刻度格式:<1000无小数,>1000保留一位小数
Gnuplot实现混合刻度格式方案
要实现小于1000时显示无小数整数、大于等于1000时显示带一位小数的k格式(1000优先显示为1k),可以利用Gnuplot的条件运算符和字符串格式化函数,直接在刻度格式设置中实现动态判断:
# 设置Y轴刻度格式:小于1000显示整数,1000显示1k,大于1000显示一位小数+k set format y '%s' (y < 1000 ? sprintf("%.0f", y) : (y == 1000 ? "1k" : sprintf("%.1fk", y/1000)))
说明:
- 利用Gnuplot的三元运算符
? :对每个刻度值y做范围判断 - 当
y < 1000时,通过sprintf("%.0f", y)输出无小数的整数格式(如100、900) - 当
y == 1000时,直接输出字符串"1k",满足优先显示1k的需求 - 当
y > 1000时,将数值除以1000后用sprintf("%.1fk", y/1000)输出带一位小数的k格式(如1.1k、1.5k)
如果可以接受1000显示为1.0k,可以简化命令:
set format y '%s' (y < 1000 ? sprintf("%.0f", y) : sprintf("%.1fk", y/1000))
该方案适用于Gnuplot 5.0及以上版本,能自动适配所有Y轴刻度值的格式。
内容的提问来源于stack exchange,提问作者ifffam
相关产品推荐
相关产品推荐

