我的数据存储在如下所示的 csv 文件中,但列和行更多
Mean values 61 43
Sample 1 0.009 0.059
Sample 2 0.108 0.099
Sample 3 0.043 0.038
Sample 4 0.079 0.227
Stdev 61 43
Sample 1 0.00 0.00
Sample 2 0.04 0.04
Sample 3 0.01 0.01
Sample 4 0.04 0.04
我想绘制一个像上面这样的图表,我可以在其中指定误差线。我可以手动完成,选择每个系列并添加自定义误差线,然后选择我想要的值,但是系列越多,事情就越麻烦,所以有没有更简单的方法可以做到这一点,或者我可以使用一个选项来代替手动选择每个系列来添加自定义误差线?
答案1
可以使用 javascript 制作这种图表,并且有一个插件可以让您在 Excel 中使用它。
这是我为您编写的工作代码:
https://www.funfun.io/1/#/edit/5a6b1cbbee0b8c3283c655ab
我使用带有嵌入式电子表格的在线编辑器来测试我的代码,它使用起来非常简单。在电子表格中输入数据后,您可以通过 JSON 文件使用代码访问它,它是下面的第一个文件设置。
一旦数据可用,你就必须创建一个图表,为此你必须选择一个 javascript 库。有很多功能强大的库,如 Plotly.js 或 Highcharts。我使用了Highcharts对于这个例子。
确保在script.js
文件中排列好数据。这样您就可以在图表中正确输入数据。我创建了包含script.js
电子表格数据的局部变量,如下所示:
var labels = []; // "samples 1" ...
var category = []; // "61" and "43"
var firstValues = [];// 61
var secondValues = [];//43
var categoryValues = [];// firstValues + secondValues
var firstErrors = [];// Stdev 61
var secondErrors = [];// Stdev 43
var errorValues = []; // firstErrors + secondError
series
利用局部变量填充正确的数据。
var series = [];
// We enter the Sample and Error Values in the chart (series)
for(var i = 0; i < category[0].length; i++) {
series.push({
name: category[0][i],
type: 'column',
color: Highcharts.getOptions().colors[i+7],
data: categoryValues[i]
});
series.push({
name: 'error',
type: 'errorbar',
data: errorValues[i],
tooltip: {
pointFormat: '(error range: {point.low}-{point.high} mm)<br/>'
}
});
}
series
并使用和其他可选选项创建图表。
Highcharts.chart('container', {
title: {
text: 'custom error bars to multiple series'
},
xAxis: {
categories: labels
},
yAxis: {
allowDecimals: true,
min: 0,
max: 0.3
},
tooltip: {
shared:true
},
series: series
});
您可以通过将 URL 粘贴到 Excel 中来加载它Funfun Excel 插件。以下是我的例子:
然后,您可以以 JPEG、PNG、PDF、SVG 格式下载它,或者根据需要打印它。
披露:我是 Funfun 的开发人员。