一个命令行脚本,使用 Microsoft Excel 从 CSV 文件绘制图表。
该项目最初由 Antoine 编写。这个存储库只是他制作的原始项目的一个分支。我个人并不认识他。我喜欢这项工作,但它还没有在 github 上(据我所知),所以我在这里创建了一个存储库。以下是原作者的叙述。如果有任何意见或建议,请访问作者的网站并报告任何问题或请求改进,请在此处打开问题。
我使用多种编程语言进行软件原型设计。我经常需要生成随时间变化的数据,这些数据主要以网格格式显示。但是,与将数据绘制到图表相比,这并不是了解数据如何随时间变化的最佳方法。
我所知道的大多数编程语言都不提供用于将数据绘制到图表的本机库。这不是一件容易的事。大多数编程语言通常需要外部库来实现该过程,并且每个库的工作方式并不相同。
Excel 是用于解析逗号分隔值 (CSV) 文件的本机平台,可以编写脚本将结果绘制到图像中。
该脚本的目的是允许任何生成数据的编程语言将原始数据保存到 CSV 文件,然后使用 Excel 的功能将结果绘制到图像中,从而将数据绘制到图像中。
以下部分列出了csvPlot脚本的功能:
该脚本有一些限制,请参见此处。
输出图像的分辨率可能与命令行上请求的分辨率有 ± 1 像素的差异。这是 Excel 处理图像尺寸的限制,因为它使用“点”作为基本单位而不是实际像素。必须计算从像素到点的转换,这可能包含小的精度误差。
唯一支持的图像格式是 PNG。目前尚不清楚 Excel 是否真的支持 JPG 导出图形,但 PNG 似乎是完美的候选者,因为它是无损压缩格式。
预计每列的第一行包含该列的标题,该标题将用作图中绘制的系列的名称。
启动脚本的命令如下。必须使用至少 6 个命令行参数来调用该脚本。
姓名 | 描述 |
---|---|
输入文件 | 输入 CSV 文件的路径 |
输出文件 | 输出PNG图像的路径 |
宽度 | 输出图像的宽度(以像素为单位) |
高度 | 输出图像的高度(以像素为单位) |
系列#1,X 柱 | 第一个系列的 X 列索引 |
系列#1,Y 柱 | 第一个系列的 Y 列索引 |
系列#2,X 柱 | 第二系列的X列索引 |
系列#2,Y 柱 | 第二系列Y列索引 |
系列 #n,X 列 | ... |
系列#n,Y 列 | ... |
请注意,列索引是从 1 开始的,而不是从 0 开始的。这意味着 A 列是第 1 列,而不是第 0 列。
该脚本是用 VBScript 编写的。使用以下命令从批处理文件 (*.bat) 执行脚本:
@echo off
cscript //nologo "%~dp0 csvPlot .vbs" pathtodemo.csv pathtodemo.png 800 600 1 2
pause
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.
C:>cd /d C:Temp csvPlot demo
C:Temp csvPlot demo>cscript //Nologo csvPlot .vbs %cd%CarEngineModel.csv %cd%CarEngineModel.png 853 479 1 3 1 4 1 2 Loading input file C:Temp csvPlot demoCarEngineModel.csv...
File load successful.
File has 4 columns.
Plotting series of columns 1 and 3...
Plotting series of columns 1 and 4...
Plotting series of columns 1 and 2...
File C:Temp csvPlot demoCarEngineModel.png saved successfully.
C:Temp csvPlot demo>
以下示例显示了 2015 年 Apple 股价收盘价。数据由纳斯达克提供。
CSV 数据可在此处下载:Apple Share Price over time (2015).csv
下面显示了一个假设的汽车发动机模型,该模型根据油门踏板的反馈,速度随时间增加或减少。
CSV 数据可在此处下载:Car Engine Model.csv
下面显示了 Excel 中 sin()、cos() 和 log() 函数的图表。
CSV 数据可以在此处下载:sin(x), cos(x) & log(x) function data.csv