能否在Linux终端基于Excel表格生成Gnuplot图表?
能否在Linux终端基于Excel表格生成Gnuplot?
可以实现,但Gnuplot本身不直接支持读取.xls/.xlsx格式的Excel文件,需要先把Excel数据转换成Gnuplot兼容的文本格式(如CSV、TSV),再用Gnuplot绘图。以下是具体步骤和工具:
1. 将Excel文件转成文本格式
Linux终端下有多个工具可以完成这个转换,推荐几个常用的:
用ssconvert(Gnumeric套件)
Gnumeric是Linux下的电子表格工具,其附带的ssconvert命令支持批量转换Excel文件:
- 先安装Gnumeric:
Debian/Ubuntu:sudo apt install gnumeric
RHEL/CentOS:sudo yum install gnumeric - 转换命令:
ssconvert input.xlsx output.csv # 转成CSV格式 ssconvert input.xlsx output.tsv # 转成TSV格式
用xlsx2csv
这是一个轻量的Python工具,专门处理xlsx转CSV:
- 安装:
pip install xlsx2csv - 转换命令:
xlsx2csv input.xlsx output.csv # 转CSV xlsx2csv input.xlsx output.tsv -t # 转TSV(制表符分隔)
用LibreOffice命令行模式
如果系统已装LibreOffice,可以用无头模式转换:
libreoffice --headless --convert-to csv input.xlsx
转换后的CSV文件会和原Excel文件在同一目录下。
2. 用Gnuplot绘制图形
转换完成后,就可以用Gnuplot读取生成的文本文件绘图。举个简单例子:
- 打开Gnuplot终端:
gnuplot - 执行绘图命令(假设是CSV文件,逗号分隔):
set datafile separator ',' # 指定分隔符,TSV用'\t' plot 'output.csv' using 1:2 with linespoints title 'Excel Data Plot' set terminal png set output 'plot.png' replot # 导出为PNG图片
3. 自动化流程(可选)
可以写一个shell脚本把转换和绘图整合在一起,比如:
#!/bin/bash if [ $# -ne 1 ]; then echo "Usage: $0 <input-excel-file>" exit 1 fi # 转换Excel到临时CSV ssconvert "$1" temp.csv # Gnuplot绘图并导出为PNG gnuplot -e " set datafile separator ','; set terminal png size 800,600; set output 'excel_plot.png'; plot 'temp.csv' using 1:2 with lines title 'Data from Excel'; " # 清理临时文件 rm temp.csv echo "Plot saved as excel_plot.png"
给脚本加执行权限:chmod +x excel2gnuplot.sh,然后运行:./excel2gnuplot.sh input.xlsx
注意事项
- Excel中的合并单元格、空值、非数值内容可能会导致转换后的数据异常,建议提前在Excel中整理好数据(比如拆分合并单元格、填充空值)。
- 如果Excel有多个工作表,
ssconvert和xlsx2csv可以指定工作表,比如xlsx2csv input.xlsx --sheet 2 output.csv(读取第2个工作表)。
内容的提问来源于stack exchange,提问作者Muhammad Awais
相关产品推荐
相关产品推荐

