/**
* A box plot chart is a useful tool for visializing data distribution within datasets.
* For example, salary ranges for a set of occupations, or life expectancy for a set
* of countries. A single box with whiskers displays the following values for a dataset:
*
* * minimum
* * lower quartile (Q1)
* * median (Q2)
* * higher quartile (Q3)
* * maximum
*
* For example:
*
* @example
* Ext.create({
* xtype: 'cartesian',
* width: 400,
* height: 400,
* renderTo: Ext.getBody(),
* insetPadding: '20 20 10 10',
* store: {
* data: [{
* category: 'Engineer IV',
* low: 110, q1: 130, median: 175, q3: 200, high: 225
* }, {
* category: 'Market',
* low: 75, q1: 125, median: 210, q3: 230, high: 255
* }]
* },
* axes: [
* {
* type: 'numeric',
* position: 'left',
* renderer: function (axis, text) {
* return '$' + text + ' K'
* }
* },
* {
* type: 'category',
* position: 'bottom'
* }
* ],
* series: {
* type: 'boxplot',
* xField: 'category',
* style: {
* maxBoxWidth: 50,
* lineWidth: 2
* }
* }
* });
*
*/
Ext.define('Ext.chart.series.BoxPlot', {
extend: 'Ext.chart.series.Cartesian',
alias: 'series.boxplot',
type: 'boxplot',
seriesType: 'boxplotSeries',
isBoxPlot: true,
requires: [
'Ext.chart.series.sprite.BoxPlot',
'Ext.chart.sprite.BoxPlot'
],
/**
* @cfg {Object} style Custom style configuration for the sprite used in the series.
* It overrides the style that is provided by the current theme. See
* {@link Ext.chart.theme.series.BoxPlot}
*/
config: {
itemInstancing: {
type: 'boxplot',
animation: {
// Setting the duration of these attributes to zero because
// the 'data' attributes of the series sprite (MarkerHolder)
// will be animated instead, and then changes applied to
// the attributes of 'boxplot' instances instantly.
customDurations: {
x: 0,
low: 0,
q1: 0,
median: 0,
q3: 0,
high: 0
}
}
},
/**
* @cfg {String} [lowField='low']
* The name of the store record field that represents the smallest value of a dataset.
*/
lowField: 'low',
/**
* @cfg {String} [q1Field='q1']
* The name of the store record field that represents the lower (1-st) quartile
* value of a dataset.
*/
q1Field: 'q1',
/**
* @cfg {String} [medianField='median']
* The name of the store record field that represents the median of a dataset.
*/
medianField: 'median',
/**
* @cfg {String} [q3Field='q3']
* The name of the store record field that represents the upper (3-rd) quartile
* value of a dataset.
*/
q3Field: 'q3',
/**
* @cfg {String} [highField='high']
* The name of the store record field that represents the largest value of a dataset.
*/
highField: 'high'
},
fieldCategoryY: ['Low', 'Q1', 'Median', 'Q3', 'High'],
updateXAxis: function(xAxis) {
xAxis.setExpandRangeBy(0.5);
this.callParent(arguments);
}
});