Commit ecf71f6c authored by Sven Schneider's avatar Sven Schneider
Browse files

implemented boxplot and linechart from plotly.

No related merge requests found
Showing with 340 additions and 31 deletions
+340 -31
......@@ -136,6 +136,8 @@
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-xl-6">
<div class="card mb-4">
......@@ -174,6 +176,49 @@
</div>
<!-- end row -->
<div class="row">
<div class="col-xl-6">
<div class="card mb-4">
<div class="card-header">
<i class="fas fa-chart-area mr-1"></i>
Boxplot plotly
</div>
<div class="card-body">
<div
id="BoxplotPlotly"
width="100%"
height="40"
>
<!-- Plotly chart will be drawn inside this DIV -->
</div>
</div>
</div>
</div>
<div class="col-xl-6">
<div class="card mb-4">
<div class="card-header">
<i class="fas fa-chart-area mr-1"></i>
Lineplot Plotly
</div>
<div class="card-body">
<div
id="LineplotPlotly"
width="100%"
height="40"
>
<!-- Plotly chart will be drawn inside this DIV -->
</div>
</div>
</div>
</div>
</div>
<!-- end row -->
<div class="row">
<div class="col-xl-12">
<div class="card mb-4">
......
......@@ -438,7 +438,7 @@ followNextLink(
})
.then((observationArr) => {
// updateLineChartAC(chart1LineTitle, observationArr);
drawHeatMapAC2(observationArr);
// drawHeatMapAC2(observationArr);
///////////// use chart.js for line chart
///// check this out : https://stackoverflow.com/questions/57343566/zoom-function-for-chart-js
......@@ -589,6 +589,8 @@ followNextLink(
loadJS('js/createPlotlyPlots.js', makeRibbonPlot(jsonFromArr2), document.body);
makeHeatmap(jsonFromArr2);
makeBoxplot(jsonFromArr2);
makeLinePlot(jsonFromArr2);
///////////////////////////////////////
......
......@@ -155,9 +155,8 @@ function prepHeatmapData(jsonData) {
var breakOut = false;
for (var hour = 0; hour < z.length; hour++) {
for (var day = 0; day < incr; day++) {
idx = (day * maxH) + hour ;
if (idx >= L)
continue;
idx = day * maxH + hour;
if (idx >= L) continue;
z[hour][day] = jsonData[idx].y;
cnt++;
if (cnt >= L) {
......@@ -165,8 +164,7 @@ function prepHeatmapData(jsonData) {
break;
}
}
if (breakOut)
break;
if (breakOut) break;
}
// window.alert(cnt);
......@@ -179,27 +177,37 @@ function prepHeatmapData(jsonData) {
function makeHeatmap(dat) {
z_data = prepHeatmapData(dat);
layout = { // all "layout" attributes: #layout
title: 'Inlet flow Overview of 2020 - 1st Jan - 30th Jun', // more about "layout.title": #layout-title
layout = {
// all "layout" attributes: #layout
title: "Inlet flow Overview of 2020 - 1st Jan - 30th Jun", // more about "layout.title": #layout-title
showlegend: true,
autosize: true,
width: 1400,
height: 800,
xaxis: { // all "layout.xaxis" attributes: #layout-xaxis
title: 'Number of the day of the year',
xaxis: {
// all "layout.xaxis" attributes: #layout-xaxis
title: "Number of the day of the year",
tickmode: "array",
tickvals: [0 , 31, 60, 91, 121, 152, 182],
ticktext: ["1st. Jan", "1st Feb", "1st Mar", "1st Apr", "1st May", "1st Jun", "1st Jul"], // more about "layout.xaxis.title": #layout-xaxis-title
tickvals: [0, 31, 60, 91, 121, 152, 182],
ticktext: [
"1st. Jan",
"1st Feb",
"1st Mar",
"1st Apr",
"1st May",
"1st Jun",
"1st Jul",
], // more about "layout.xaxis.title": #layout-xaxis-title
},
yaxis: {
title: "Hours of the day",
tickmode: "array",
tickvals: [...Array(24).keys()],
ticktext: String([...Array(24).keys()]),
},
annotations: [ // all "annotation" attributes: #layout-annotations
annotations: [
// all "annotation" attributes: #layout-annotations
// {
// text: '1st of February', // #layout-annotations-text
// x: 0, // #layout-annotations-x
......@@ -207,26 +215,32 @@ function makeHeatmap(dat) {
// y: 0, // #layout-annotations-y
// yref: 'paper' // #layout-annotations-yref
// }
]
}
],
};
var data = [
{
// z: [ [1, 20, 30 , 20], [20, 1, 60, 10 ], [30, 60, 1, 5], [1, 20, 30 , 20], [20, 1, 60, 10 ], [30, 60, 1, 5] ],
z: z_data,
type: "heatmap",
colorscale: 'Portland',
zsmooth: 'none', // fast // best // none
colorbar: {
title: {
text: "Temperature (°C)",
side: "top"
}
}
},
];
Plotly.newPlot("heatmap2d", data, layout);
}
//////////////////////////////
function make2dHistogram(dat) {
//////////////////////////////
// make heatmap or 2d histogram plot
var x = [];
var y = [];
for (var i = 0; i < 500; i++) {
......@@ -244,3 +258,251 @@ function make2dHistogram(dat) {
];
Plotly.newPlot("heatmap2d", data);
}
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////
function prepBoxplotData(jsonData) {
var resList = [];
const L = jsonData.length;
var currentMonth = 0;
var x = [];
var y = [];
for (var d = 0; d < L; d++) {
let tmpDate = new Date(jsonData[d].x);
// let datum = tmpDate.getDate(); // gets the day of the month 1...31
let month = tmpDate.getUTCMonth(); // gets the month as numeric value
if (currentMonth == month) {
y.push(jsonData[d].y);
x.push(jsonData[d].x);
} else {
resList.push({ date: x , temperature: y });
var x = [];
var y = [];
currentMonth += 1;
y.push(jsonData[d].y);
x.push(jsonData[d].x);
}
}
return resList;
}
/////////////////////////////////
function makeBoxplot(dat) {
var preppedData = prepBoxplotData(dat);
var trace1 = {
y: preppedData[0].temperature,
type: "box",
name: "Jan",
jitter: 0.3,
pointpos: -1.8,
marker: {
color: "rgba(7,40,89,0.4)",
},
boxpoints: "all", // suspectedoutliers // Outliers // false // all
};
var trace2 = {
y: preppedData[1].temperature,
type: "box",
name: "Feb",
jitter: 0.3,
pointpos: -1.8,
marker: {
color: "rgba(47,40,89 ,0.4)",
},
boxpoints: "all", // suspectedoutliers // Outliers // false // all
};
var trace3 = {
y: preppedData[2].temperature,
type: "box",
name: "Mar",
jitter: 0.3,
pointpos: -1.8,
marker: {
color: "rgba(87,40,89,0.4)",
},
boxpoints: "all", // suspectedoutliers // Outliers // false // all
};
var trace4 = {
y: preppedData[3].temperature,
type: "box",
name: "Apr",
jitter: 0.3,
pointpos: -1.8,
marker: {
color: "rgba(120,40,89,0.4)",
},
boxpoints: "all", // suspectedoutliers // Outliers // false // all
};
var trace5 = {
y: preppedData[4].temperature,
type: "box",
name: "May",
jitter: 0.3,
pointpos: -1.8,
marker: {
color: "rgba(160,40,89,0.4)",
},
boxpoints: "all", // suspectedoutliers // Outliers // false // all
};
var trace6 = {
y: preppedData[5].temperature,
type: "box",
name: "Jun",
jitter: 0.3,
pointpos: -1.8,
marker: {
color: "rgba(200,40,89,0.4)",
},
boxpoints: "all", // suspectedoutliers // Outliers // false // all
};
var data = [trace1, trace2, trace3, trace4, trace5, trace6];
var layout = {
title: "Inlet flow Overview of 2020 - 1st Jan - 30th Jun", // more about "layout.title": #layout-title
showlegend: true,
autosize: true,
width: 700,
height: 500,
xaxis: {
title: 'Month of the year 2020',
zeroline: false
},
yaxis: {
title: 'Temperature (°C)',
zeroline: true
},
};
Plotly.newPlot("BoxplotPlotly", data, layout);
}
///////////////////////////////////////////////////
function makeLinePlot(dat){
var preppedData = prepBoxplotData(dat);
trace1 = {
type: 'scatter',
// x: [1, 2, 3, 4],
// y: [10, 15, 13, 17],
x: preppedData[0].date,
y: preppedData[0].temperature,
mode: 'lines',
name: 'Jan',
line: {
color: "rgba(7,40,89,0.4)",
width: 2
}
};
trace2 = {
type: 'scatter',
// x: [1, 2, 3, 4],
// y: [12, 9, 15, 12],
x: preppedData[1].date,
y: preppedData[1].temperature,
mode: 'lines',
name: 'Feb',
line: {
color: "rgba(47,40,89,0.4)",
width: 2
}
};
trace3 = {
type: 'scatter',
// x: [1, 2, 3, 4],
// y: [10, 15, 13, 17],
x: preppedData[2].date,
y: preppedData[2].temperature,
mode: 'lines',
name: 'Mar',
line: {
color: "rgba(87,40,89,0.4)",
width: 2
}
};
trace4 = {
type: 'scatter',
// x: [1, 2, 3, 4],
// y: [12, 9, 15, 12],
x: preppedData[3].date,
y: preppedData[3].temperature,
mode: 'lines',
name: 'Apr',
line: {
color: "rgba(127,40,89,0.4)",
width: 2
}
};
trace5 = {
type: 'scatter',
// x: [1, 2, 3, 4],
// y: [10, 15, 13, 17],
x: preppedData[4].date,
y: preppedData[4].temperature,
mode: 'lines',
name: 'May',
line: {
color: "rgba(167,40,89,0.4)",
width: 2
}
};
trace6 = {
type: 'scatter',
// x: [1, 2, 3, 4],
// y: [12, 9, 15, 12],
x: preppedData[5].date,
y: preppedData[5].temperature,
mode: 'lines',
name: 'Jun',
line: {
color: "rgba(207,40,89,0.4)",
width: 2
}
};
var layout = {
title: "Inlet flow Overview of 2020 - 1st Jan - 30th Jun", // more about "layout.title": #layout-title
showlegend: true,
autosize: true,
width: 700,
height: 500,
xaxis: {
title: 'Month of the year 2020',
zeroline: false
},
yaxis: {
title: 'Temperature (°C)',
zeroline: true
},
};
var data = [trace1, trace2, trace3,trace4, trace5, trace6];
Plotly.newPlot('LineplotPlotly', data, layout);
}
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment