如何在gnuplot每个箱线图下方设置列标题?
解决gnuplottex箱线图X轴替换为列标题的问题
要将X轴的数字刻度替换为数据文件的列标题,核心是读取数据文件的第一行标题,再手动指定X轴刻度标签。以下是修改后的完整gnuplottex代码:
\begin{gnuplot}[terminal=tikz, terminaloptions={color size 10cm,5cm}] reset session datafile = 'boite2.txt' colMin = 1 colMax = 3 set datafile separator '\t' # 标记数据文件第一行为列标题 set datafile header # 读取文件元信息(含标题行),不输出统计结果 stats datafile nooutput # 创建数组存储列标题 array colNames[colMax] # 将标题行的每个列名存入数组 do for [col=colMin:colMax] { colNames[col] = word(STATS_head, col) } # 自定义X轴刻度:位置对应原数字,标签替换为列名 set xtics (colNames[1] 1, colNames[2] 2, colNames[3] 3) # 绘制箱线图 plot for [col=colMin:colMax] datafile using (col):col w boxplot notitle \end{gnuplot}
关键步骤说明
set datafile header:告知gnuplot数据文件的第一行是列标题,而非数据行stats datafile nooutput:触发gnuplot读取文件结构,将标题行内容存入STATS_head变量,nooutput避免输出冗余统计信息- 数组循环:通过
word(STATS_head, col)提取标题行的第col个单词(即对应列名),存入数组备用 set xtics:手动绑定X轴位置与标签,把原数字1/2/3替换为对应的列标题
文档与示例获取途径
- gnuplot内置帮助:终端启动gnuplot后,输入
help boxplot、help xtics或help stats可查看对应命令的详细说明 - gnuplot本地示例:安装gnuplot后,安装目录下的
demo文件夹包含箱线图等各类绘图示例(如boxplot.dem) - gnuplottex文档:在LaTeX环境中执行
texdoc gnuplottex命令,可查看结合LaTeX使用gnuplot的官方文档与示例
内容的提问来源于stack exchange,提问作者Konstantin Weigmann
相关产品推荐
相关产品推荐

