[英]Preprocess Highchart data using CSV file
我想使用CSV文件預處理數據。 頁面加載后,要求瀏覽CSV文件,然后將其預處理到頁面。 我正在使用這張圖表 。 如果您能幫助我解決這個問題,我將不勝感激。 我只知道HTML + CSS基礎知識,不知道如何將它們組合在一起。
如果桌面上有數據,則可以嘗試以下解決方案作為基礎:
1. jQuery-csv.js解決方案
您可以使用其他CSV解析庫來實現。 為此,將控制添加到頁面並添加loadFile()函數,如下例所示:
<input id="readfile" type="file" onchange="loadFile(event)"/>
<script>
function loadFile(event) {
var files = event.target.files;
var reader = new FileReader();
var name = files[0].name;
reader.onload = function(e) {
var data = e.target.result;
processCSV(data);
};
reader.readAsText(files[0]);
};
function processCSV(data) {
// 1. Convert CSV text from "data" parameter to JSON
var arr = $.csv.toArray(data);
// 2. Prepare chart from "arr" array
};
</script>
2. Alasql.js解決方案
Alasql.js庫的替代解決方案(它包括文件上傳和CSV解析功能):
<input id="readfile" type="file" onchange="loadFile(event)"/>
<script>
function loadFile(event) {
alasql('SELECT * FROM FILE(?,{headers:true})', [event],function(data){
// Process your data
});
);
</script>
這里:
您可以使用下面的Highcharts運行工作片段。 在准備圖表之前,請從摘要的末尾創建文件demo.csv(手動)並將其保存到桌面。
(免責聲明:我是Alasql庫的作者)
function loadFile(event) { alasql('SELECT * FROM FILE(?,{headers:true})',[event],function(data){ // Process your data here var myseries = []; Object.keys(data[0]).forEach(function(key){ var ds = data.map(function(d){ return +d[key];}); myseries.push({name:key,data:ds}); }); // Prepare data for Hightcharts.js $('#container').highcharts({ chart: { type: 'column' }, title: { text: 'Monthly Average Rainfall' }, xAxis: { categories: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ] }, yAxis: { min: 0, title: { text: 'Rainfall (mm)' } }, plotOptions: { column: { pointPadding: 0.2, borderWidth: 0 } }, series: myseries }); }); }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script src="http://alasql.org/console/alasql.min.js"></script> <script src="http://code.highcharts.com/highcharts.js"></script> <p>Select CSV file to read</p> <input id="readfile" type="file" onchange="loadFile(event)"/> <div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div> <h3>Sample file demo.csv</h3> <pre> Paris, London 111,211 321,411 512,611 710,811 1121,222 300,422 500,622 700,822 100,222 300,422 511,622 711,811 </pre>
據我了解,您可以使用這種情況
1)運行網站並調用上傳功能
2)將文件保存在服務器上
3)通過$ .get()加載csv並解析值以創建系列對象
4)初始化圖
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.