一個命令列腳本,使用 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