我也经常需要这样做。这里有一个关于如何create a chart with Chart.js from a CSV file的链接,它解释了如何直接从CSV文件中使用Chart.js创建图表。 此使用案例说明了如何使用www.example.com Web服务将CSV文件转换为JSONFlex.io(* 完整披露:我是Flex.io的高级前端开发人员 *)。 如果您想了解实际的使用案例,请参阅以下JsFiddle:
function getRandomColor() {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
$.ajax({
type: 'post',
url: 'https://www.flex.io/api/v1/pipes/flexio-chart-js-csv-to-json/run?stream=0',
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'Bearer nmgzsqppgwqbvkfhjdjd');
},
data: $('form').serialize(),
dataType: "json",
success: function(content) {
// render the JSON result from from the Flex.io pipe
$("#flexio-result-data").text(JSON.stringify(content, null, 2))
var first_item = _.get(content, '[0]', {})
var column_labels = _.map(_.omit(first_item, ['os']), function(val, key) {
if (key != 'os')
return key
})
// use Lodash to reformat the JSON for use with Chart.js
var datasets = _.map(content, function(item) {
// use the 'os' column as our label
var item_label = _.get(item, 'os', 'Not Found')
// create an array of number values from each item's JSON object
var item_values = _.map(_.omit(item, ['os']), function(val) {
return parseFloat(val)
})
return {
label: item_label,
data: item_values,
backgroundColor: getRandomColor()
}
})
var chart_data = {
labels: column_labels,
datasets: datasets
}
// render the JSON result after mapping the data with Lodash
$("#chart-data").text(JSON.stringify(chart_data, null, 2))
// render the chart using Chart.js
var ctx = document.getElementById("canvas").getContext("2d");
window.my_chart = new Chart(ctx, {
type: 'bar',
data: chart_data,
options: {
responsive: true,
legend: {
position: 'top'
},
title: {
display: true,
text: 'Use Flex.io to Create a Chart With Chart.js Directly From a CSV File'
}
}
});
}
});
4条答案
按热度按时间elcex8rz1#
有一个Chart.js插件chartjs-plugin-datasource,可以轻松地从CSV文件加载数据。
假设您有一个如下所示的CSV文件,它以
sample-dataset.csv
的格式保存在HTML文件所在的目录中:在您的页面中包含Chart.js和chartjs-plugin-datasource:
然后,在脚本中指定
sample-dataset.csv
。默认情况下,CSV文件中的每一行都将Map到一个数据集,第一列和第一行将分别被视为数据集标签和索引标签。您还可以使用选项自定义如何解析CSV数据。hgncfbus2#
下面是我的解决方案,我的工作很好。我有一个CSV文件如下:
我想用我的数据集绘制一个条形图,
y-axis
是population
,x-axis
是country
。这是我的HTML文件的
body
。结果:
您可以使用Codesandbox来尝试。
niknxzdl3#
我也经常需要这样做。这里有一个关于如何create a chart with Chart.js from a CSV file的链接,它解释了如何直接从CSV文件中使用Chart.js创建图表。
此使用案例说明了如何使用www.example.com Web服务将CSV文件转换为JSONFlex.io(* 完整披露:我是Flex.io的高级前端开发人员 *)。
如果您想了解实际的使用案例,请参阅以下JsFiddle:
请随意浏览用例,如果您有任何问题,请告诉我。
sqxo8psd4#
将CSV数据导入ChartJS的简单示例
index.html
:您也可以下载this
index.html
file as a gist。script.js
这是一个a gist with this
script.js
file。1.确保这两个文件位于同一目录中。
1.使用浏览器打开
index.html
。其他材料
CodeSandbox example以在线预览示例。
发布此答案的原因:
我发布这个是因为人们在用JavaScript从文件系统(直接从计算机)阅读CSV文件时遇到了问题。chartjs-plugin-datasource documentation中的示例没有解释这一点,并且假设用户对处理来自Web的URL和来自文件系统的文件的差异有一些基本的知识。
我的示例只显示了ChartJS数据源插件的基本功能,不需要用于阅读CSV文件的第三方模块。
编辑:
根据ggorlen在评论中的建议,我还在答案中包含了代码片段。