gnuplot直方图:如何设置柱条上方旋转字符串的偏移量
解决方案
你之前的写法失效有两个核心原因:
- gnuplot在
using语句的数值计算上下文里,$N默认会将对应列解析为数值,直接取$3会把字符串标签转为无效数值,无法计算正确长度 - 90度旋转后的标签,其长度对应的是绘图坐标系下的y方向占用尺寸,中心对齐的标签需要向上偏移半个字符串长度的字符单位,才能完全露出在柱顶外侧
正确实现代码
测试数据test.dat格式:
01/06 4 label1 01/07 5 label2 01/08 3 label3
绘图语句:
set style data histogram set style fill solid border -1 # 基础样式可根据自己需求调整 plot 'test.dat' using 2:xtic(1) title "" , \ '' using 0:2:3 with labels rotate by 90 offset char 0, strlen(stringcolumn(3))/2. + 0.2 title ""
参数说明
stringcolumn(3):明确获取第三列的字符串内容,避免被解析为数值strlen(stringcolumn(3))/2.:计算标签长度的一半作为基础偏移量,刚好让标签底部对齐柱顶- 额外加的
+0.2是预留的小间隙,避免标签贴在柱顶太近,可根据视觉效果自行调整 - 如果你的旋转方向是
rotate by -90(顺时针旋转,文字从上往下读),则把偏移量改成负的对应值即可
如果使用非等宽字体,可将/2.的系数调整为0.55~0.6,适配字符宽度差异。
内容的提问来源于stack exchange,提问作者Jack
相关产品推荐
相关产品推荐

