Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(746)

Side by Side Diff: bower_components/chartnewjs/mathFunctions.js

Issue 786953007: npm_modules: Fork bower_components into Polymer 0.4.0 and 0.5.0 versions (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 function mean(params) {
2 var datasetNr = params.datasetNr;
3 var data = params.data;
4 var mean = 0;
5 var nr = 0;
6 for (var j = 0; j < data.datasets[datasetNr].data.length; j++) {
7 // important to check because missing values are possible
8 if (!(typeof(data.datasets[datasetNr].data[j])=='undefined')){
9 mean += 1*data.datasets[datasetNr].data[j];
10 nr++;
11 }
12 }
13 mean /= nr;
14 return mean;
15 }
16
17 function varianz(params) {
18 var data = params.data;
19 var datasetNr = params.datasetNr;
20 var meanVal = mean(params);
21 var varianz = 0;
22 var nr = 0;
23 for (var j = 0; j < data.datasets[datasetNr].data.length; j++) {
24 // important to check because missing values are possible
25 if (!(typeof(data.datasets[datasetNr].data[j])=='undefined')) {
26 varianz += Math.pow(1*data.datasets[datasetNr].data[j]-m eanVal,2);
27 nr++;
28 }
29 }
30 return varianz/nr;
31 }
32
33 function stddev(params) {
34 return Math.sqrt(varianz(params));
35 }
36
37 function cv(params) {
38 return stddev(params)/mean(params);
39 }
40
41 function median(params) {
42 function numSort (a, b) {
43 return a - b;
44 }
45 // slice => copy array
46 var dataArray = params.data.datasets[params.datasetNr].data.slice();
47 dataArray.sort(numSort);
48 // missing values are at the end
49 var dataArrayLength = dataArray.length;
50 j = dataArrayLength-1;
51 while (typeof(dataArray[j]) == "undefined" && j >= 0) {
52 j--;
53 }
54 dataArrayLength = j+1;
55 // odd
56 if (dataArrayLength % 2) {
57 return dataArray[Math.floor(dataArrayLength/2)];
58 } else { // even
59 var lowerMiddle = dataArray[dataArrayLength/2-1];
60 var higherMiddle = dataArray[dataArrayLength/2];
61 return (higherMiddle+lowerMiddle)/2;
62 }
63 }
64
65 function drawMath(ctx,config,data,msr,vars) {
66 var xAxisPosY = vars.xAxisPosY;
67 var yAxisPosX = vars.yAxisPosX;
68 var valueHop = vars.valueHop;
69 var scaleHop = vars.scaleHop;
70 var zeroY = vars.zeroY;
71 var calculatedScale = vars.calculatedScale;
72 var calculateOffset = vars.calculateOffset;
73 var barWidth = vars.barWidth;
74 var barBool = !(typeof barWidth == "undefined") ? true : false;
75
76 // check each dataset if a mathDraw function exists
77 for (var i = 0; i < data.datasets.length; i++) {
78 // get mathFctName (stddev|mean|...)
79 var deviationFct = data.datasets[i].drawMathDeviation;
80 if (deviationFct) {
81 drawMathDeviation(i,deviationFct);
82 }
83 var lineFct = data.datasets[i].drawMathLine;
84 if (lineFct) {
85 drawMathLine(i,lineFct);
86 }
87 }
88
89 /**
90 * Draw a deviation vertical line (if needed with top and bottom horizon tal lines)
91 * @param i {integer} dataset number
92 * @param deviationFct {string} math function name
93 */
94 function drawMathDeviation(i,deviationFct) {
95 var deviation = 0;
96 // check if the math function exists
97 if (typeof eval(deviationFct) == "function") {
98 var parameter = {data:data,datasetNr: i};
99 deviation = window[deviationFct](parameter);
100 }
101 if (isNumber(deviation)) {
102 ctx.strokeStyle= data.datasets[i].deviationStrokeColor ? data.datasets[i].deviationStrokeColor : config.defaultStrokeColor;
103 ctx.lineWidth = config.datasetStrokeWidth;
104 ctx.beginPath();
105 for (var j = 0; j < data.datasets[i].data.length; j++) {
106 // important to check because missing values are possible
107 if (!(typeof(data.datasets[i].data[j])=='undefin ed')) {
108 var deviationWidth = data.datasets[i].de viationWidth;
109 // draw the top and the bottom of the ve rtical line if a deviationWidth exists
110 if (deviationWidth) {
111 ctx.moveTo(xPos(j,i,barWidth,bar Bool)-deviationWidth,yPos(i,j,-deviation,true));
112 ctx.lineTo(xPos(j,i,barWidth,bar Bool)+deviationWidth,yPos(i,j,-deviation,true));
113 ctx.moveTo(xPos(j,i,barWidth,bar Bool)-deviationWidth,yPos(i,j,deviation,true));
114 ctx.lineTo(xPos(j,i,barWidth,bar Bool)+deviationWidth,yPos(i,j,deviation,true));
115 }
116 // draw the vertical line
117 ctx.moveTo(xPos(j,i,barWidth,barBool),yP os(i,j,-deviation,true));
118 ctx.lineTo(xPos(j,i,barWidth,barBool),yP os(i,j,deviation,true));
119 }
120 }
121 ctx.stroke();
122 ctx.closePath();
123 }
124 }
125
126 /**
127 * Draw a horizontal line
128 * @param i {integer} numer of dataset
129 * @param lineFct {string} name of the mathfunctions => compute height
130 */
131 function drawMathLine(i,lineFct) {
132 var line = 0;
133 // check if the math function exists
134 if (typeof eval(lineFct) == "function") {
135 var parameter = {data:data,datasetNr: i};
136 line = window[lineFct](parameter);
137 }
138 if (!(typeof(line)=='undefined')) {
139 ctx.strokeStyle= data.datasets[i].mathLineStrokeColor ? data.datasets[i].mathLineStrokeColor : config.defaultStrokeColor;
140 ctx.lineWidth = config.datasetStrokeWidth;
141 ctx.beginPath();
142 ctx.moveTo(yAxisPosX,yPos(i,0,line,false));
143 ctx.lineTo(yAxisPosX + msr.availableWidth,yPos(i,data.da tasets[i].data.length-1,line,false));
144 ctx.stroke();
145 ctx.closePath();
146 }
147 }
148
149 /**
150 * Get a y position depending on the current values
151 * @param dataset {integer} number of dataset
152 * @param iteration {integer} number of value inside dataset.data
153 * @param add {float} add a value to the current value if value is true
154 * @param value {bool} true => value+add, false=>add
155 * @returns {float} position (px)
156 */
157 function yPos(dataSet, iteration, add,value) {
158 value = value ? 1*data.datasets[dataSet].data[iteration] : 0;
159 return xAxisPosY - calculateOffset(config.logarithmic, value+add , calculatedScale, scaleHop);
160 };
161 function xPos(iteration,dataSet,barWidth,bar) {
162 if (bar) {
163 return yAxisPosX + config.barValueSpacing + valueHop * i teration + barWidth * dataSet
164 + config.barDatasetSpacing * dataSet + config.bar StrokeWidth * dataSet+barWidth/2;
165 } else {
166 return yAxisPosX + (valueHop * iteration);
167 }
168
169 };
170 }
OLDNEW
« no previous file with comments | « bower_components/chartnewjs/improvements_change_history ('k') | bower_components/chartnewjs/sample.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698