Giter Site home page Giter Site logo

echarts-stat's Introduction

ecStat

A statistical and data mining tool for ECharts. You can use it to analyze data and then visualize the results with ECharts, or just use it to process data.

It works both in node.js and in the browser.

Installing

If you use npm, you can install it with:

 npm install echarts-stat

Otherwise, download this tool from dist directory:

<script src='./dist/ecStat.js'></script>
<script>

var result = ecStat.clustering.hierarchicalKMeans(data, clusterNumber, false);

</script>

API Reference

Histogram

A histogram is a graphical representation of the distribution of numerical data. It is an estimate of the probability distribution of a quantitative variable. It is a kind of bar graph. To construct a histogram, the first step is to "bin" the range of values - that is, divide the entire range of values into a series of intervals - and then count how many values fall into each interval. The bins are usually specified as consecutive, non-overlapping intervals of a variable. Here the bins(intervals) must be adjacent, and are of equal size.

Syntax

var bins = ecStat.histogram(data, binMethod);
Parameter
  • data - Array<number>. Data samples of numbers.

     var data = [8.6, 8.8, 10.5, 10.7, 10.8, 11.0, ... ];
  • binMethod - string. There are four methods to calculate the number of bins, which are squareRoot, scott, freedmanDiaconis, and sturges. Of course, there is no "best" number of bins, and different bin sizes can reveal different features of the data.

    • squareRoot - This is the default method, which is also used by Excel histograms. Returns the number of bins according to Square-root choice:

      var bins = ecStat.histogram(data);
    • scott - Returns the number of bins according to Scott's normal reference Rule:

       var bins = ecStat.histogram(data, 'scott');
    • freedmanDiaconis - Returns the number of bins according to The Freedman-Diaconis rule:

       var bins = ecStat.histogram(data, 'freedmanDiaconis');
    • sturges - Returns the number of bins according to Sturges' formula:

       var bins = ecStat.histogram(data, 'sturges');
Return Value
  • bins - Object. Contain detailed messages of each bin and data used for ECharts to draw the bar chart.
    • bins.bins - Array.<Object>. An array of bins, where each bin is an object, containing three attributes:
      • x0 - number. The lower bound of the bin (inclusive).
      • x1 - number. The upper bound of the bin (exclusive).
      • sample - Array.<number>. Containing the associated elements from the input data.
    • bins.data - Array.<Array.<number>>. An array of bins data, each bins data is an array not only containing the mean value of x0 and x1, but also the length of sample, which is the number of sample values in that bin.

Examples

When using ECharts bar chart to draw the histogram, we must notice that, setting the xAxis.scale as true.

<script src='https://cdn.bootcss.com/echarts/3.4.0/echarts.js'></script>
<script src='./dist/ecStat.js'></script>
<script>

var bins = ecStat.histogram(data);
var option = {
	...
	xAxis: [{
		type: 'value',
		// this must be set as true, otherwise barWidth and bins width can not corresponding on
		scale: true 
	}],
	...
}

</script>

histogram

Run

Clustering

Clustering can divide the original data set into multiple data clusters with different characteristics. And through ECharts, you can visualize the results of clustering, or visualize the process of clustering.

Syntax

var result = ecStat.clustering.hierarchicalKMeans(data, clusterNumber, stepByStep);
Parameter
  • datatwo-dimensional Numeric Array. Each data point can have more than two numeric attributes in the original data set. In the following example, data[0] is called data point and data[0][1] is one of the numeric attributes of data[0].

    var data = [
      	[1, 2, 3, 4, 5],
      	[6, 7, 8, 9, 10],
      	[11, 12, 13, 14, 15],
      	...
          ];
  • clusterNumernumber. The number of clusters generated

  • stepByStepboolean. Control whether doing the clustering step by step

Return Value
  • resultObject. Including the centroids, clusterAssment, and pointsInCluster. For Example:

     result.centroids = [
    
     	[-0.460, -2.778],
     	[2.934, 3.128],
         	...
     ];
    
     // indicate which cluster each data point belonging to, and the distance to cluster centroids
     result.clusterAssment = [
    
     	[1, 0.145],
     	[2, 0.680],
     	[0, 1.022],
     	...
     ];
    
     // concrete data point in each cluster
     result.pointsInCluster = [
     	[
     		[0.335, -3.376],
     		[-0.994, -0.884],
     		...
     	],
     	...
     ];

Examples

You can not only do cluster analysis through this interface, but also use ECharts to visualize the results.

Note: the clustering algorithm can handle multiple numeric attributes, but for the convenience of visualization, two numeric attributes are chosen here as an example.

Directly visualize the results of clustering
<script src='https://cdn.bootcss.com/echarts/3.4.0/echarts.js'></script>
<script src='./dist/ecStat.js'></script>
<script>

var clusterNumber = 3;
var result = ecStat.clustering.hierarchicalKMeans(data, clusterNumber, false);

</script>

static clustering

Run

Visualize the process of clustering
<script src='https://cdn.bootcss.com/echarts/3.4.0/echarts.js'></script>
<script src='./dist/ecStat.js'></script>
<script>

var clusterNumber = 6;
var result = ecStat.clustering.hierarchicalKMeans(data, clusterNumber, true);

</script>

dynamic clustering

Run

Regression

Regression algorithm can according to the value of the dependent and independent variables of the data set, fitting out a curve to reflect their trends. The regression algorithm here only supports two numeric attributes.

Syntax

var myRegression = ecStat.regression(regressionType, data, order);
Parameters
  • regressionType - string. There are four types of regression, whice are linear, exponential, logarithmic, polynomial

  • data - two-dimensional Numeric Array. Each data object should have two numeric attributes in the original data set. For Example:

     var data = [
    
     	[1, 2],
     	[3, 5],
     	...
     ];
  • order - number. The order of polynomial. If you choose other types of regression, you can ignore it

Return Value
  • myRegression - Object. Including points, parameter, and expression. For Example:

     myRegression.points = [
     	[1, 2],
     	[3, 4],
     	...
     ];
    
     // this is the parameter of linear regression, for other types, it shoule be a little different
     myRegression.parameter = {
     	gradient: 1.695,
     	intercept: 3.008
     };
    
     myRegression.expression = 'y = 1.7x + 3.01';

Examples

You can not only do regression analysis through this interface, you can also use ECharts to visualize the results.

Linear Regression
<script src='https://cdn.bootcss.com/echarts/3.4.0/echarts.js'></script>
<script src='./dist/ecStat.js'></script>
<script>

var myRegression = ecStat.regression('linear', data);

</script>

linear regression

Run

Exponential Regression
<script src='https://cdn.bootcss.com/echarts/3.4.0/echarts.js'></script>
<script src='./dist/ecStat.js'></script>
<script>

var myRegression = ecStat.regression('exponential', data);

</script>

exponential regression

Run

Logarithmic Regression
<script src='https://cdn.bootcss.com/echarts/3.4.0/echarts.js'></script>
<script src='./dist/ecStat.js'></script>
<script>

var myRegression = ecStat.regression('logarithmic', data);

</script>

logarithmic regression

Run

Polynomial Regression
<script src='https://cdn.bootcss.com/echarts/3.4.0/echarts.js'></script>
<script src='./dist/ecStat.js'></script>
<script>

var myRegression = ecStat.regression('polynomial', data, 3);

</script>

polynomial regression

Run

Statistics

This interface provides basic summary statistical services.

ecStat.statistics.deviation()

Syntax
var sampleDeviation = ecStat.statistics.deviation(dataList);
Parameter
  • dataList : Array.<number>
Return Value
  • sampleDeviation: number. Return the deviation of the numeric array dataList. If the dataList is empty or the length less than 2, return 0.

ecStat.statistics.sampleVariance()

Syntax
var varianceValue = ecStat.statistics.sampleVariance(dataList);
Parameter
  • dataList : Array.<number>
Return Value
  • varianceValue: number. Return the variance of the numeric array dataList. If the dataList is empty or the length less than 2, return 0.

ecStat.statistics.quantile()

Syntax
var quantileValue = ecStat.statistics.quantile(dataList, p);
Parameter
  • dataList : Array.<number>. Sorted array of numbers.
  • p: number. where 0 =< p <= 1. For example, the first quartile at p = 0.25, the seconed quartile at p = 0.5(same as the median), and the third quartile at p = 0.75.
Return Value
  • quantileValue: number. Return the p-quantile of the sorted array of numbers. If p <= 0 or the length of dataList less than 2, return the first element of the sorted array; if p >= 1, return the last element of the sorted array; If dataList is empty, return 0.

ecStat.statistics.max()

Syntax
var maxValue = ecStat.statistics.max(dataList);
Parameter
  • dataList : Array.<number>
Return Value
  • maxValue: number. The maximum value of the dataList.

ecStat.statistics.min()

Syntax
var minValue = ecStat.statistics.min(dataList);
Parameter
  • dataList : Array.<number>
Return Value
  • minValue: number. The minimum value of the dataList.

ecStat.statistics.mean()

Syntax
var meanValue = ecStat.statistics.mean(dataList);
Parameter
  • dataList : Array.<number>
Return Value
  • meanValue: number. The average of the dataList.

ecStat.statistics.median()

Syntax
var medianValue = ecStat.statistics.median(dataList);
Parameter
  • dataList : Array.<number>. Sorted array of numbers
Return Value
  • medianValue: number. The median of the dataList.

ecStat.statistics.sum()

Syntax
var sumValue = ecStat.statistics.sum(dataList);
Parameter
  • dataList : Array.<number>
Return Value
  • sumValue: number. The sum of the dataList.

echarts-stat's People

Contributors

deqingli avatar roblav96 avatar fbambi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.