Your search did not match any results.
Point Charts

Bubble

Documentation

This demo illustrates use of the bubble series type. This series can be used when you need to visualize a data set with three dimensions: the first two dimensions are indicated by coordinates on the axes, the third by the size of the bubble. In this demo, the bubble size helps estimate the percentage of people with age over 60 to the total population in the country.

www.helpage.org
Copy to Plunker
Apply
Reset
<dx-chart id="chart" [dataSource]="dataSource" title="Correlation between Total Population and<br> Population with Age over 60" [palette]="['#00ced1', '#008000', '#ffd700', '#ff7f50']" (onSeriesClick)="onSeriesClick($event)"> <dxo-common-series-settings type="bubble"></dxo-common-series-settings> <dxo-export [enabled]="true"></dxo-export> <dxo-legend position="inside" horizontalAlignment="left"> <dxo-border [visible]="true"></dxo-border> </dxo-legend> <dxo-argument-axis title="Total Population"> <dxo-label [customizeText]="argumentCustomizeText"></dxo-label> </dxo-argument-axis> <dxi-value-axis title="Population with Age over 60"> <dxo-label [customizeText]="valueCustomizeText"></dxo-label> </dxi-value-axis> <dxo-tooltip [enabled]="true" location="edge" [customizeTooltip]="customizeTooltip"> </dxo-tooltip> <dxi-series *ngFor="let correlation of correlationSource" [name]="correlation.name" [argumentField]="correlation.argumentField" [valueField]="correlation.valueField" [sizeField]="correlation.sizeField" [tagField]="correlation.tagField"> </dxi-series> </dx-chart>
import { NgModule, Component, enableProdMode } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { DxChartModule } from 'devextreme-angular'; import { Population, CorrelationDescription, Service } from './app.service'; if(!/localhost/.test(document.location.host)) { enableProdMode(); } @Component({ selector: 'demo-app', templateUrl: 'app/app.component.html', styleUrls: ['app/app.component.css'], providers: [Service] }) export class AppComponent { dataSource: Population[]; correlationSource: CorrelationDescription[]; constructor(service: Service) { this.dataSource = service.getPopulationData(); this.correlationSource = service.getCorrelationSource(); } customizeTooltip(arg: any) { return { text: arg.point.tag + '<br/>Total Population: ' + arg.argumentText + 'M <br/>Population with Age over 60: ' + arg.valueText + 'M (' + arg.size + '%)' }; } argumentCustomizeText(args: any) { return args.value + 'M'; } valueCustomizeText(args: any) { return args.value + 'M'; } onSeriesClick(e: any) { var series = e.target; if (series.isVisible()) { series.hide(); } else { series.show(); } } } @NgModule({ imports: [ BrowserModule, DxChartModule ], declarations: [AppComponent], bootstrap: [AppComponent] }) export class AppModule { } platformBrowserDynamic().bootstrapModule(AppModule);
/deep/ #chart { height: 440px; }
import { Injectable } from '@angular/core'; export class Population { total1: number; total2?: number; total3?: number; total4?: number; older1: number; older2?: number; older3?: number; older4?: number; perc1: number; perc2?: number; perc3?: number; perc4?: number; tag1: string; tag2?: string; tag3?: string; tag4?: string; } export class CorrelationDescription { name: string; argumentField: string; valueField: string; sizeField: string; tagField: string; } let populationData: Population[] = [{ total1: 9.5, total2: 168.8, total3: 127.2, older1: 2.4, older2: 8.8, older3: 40.1, perc1: 25.4, perc2: 5.3, perc3: 31.6, tag1: 'Sweden', tag2: 'Nigeria', tag3: 'Japan' }, { total1: 82.8, total2: 91.7, total3: 90.8, older1: 21.9, older2: 4.6, older3: 8.0, perc1: 26.7, perc2: 5.4, perc3: 8.9, tag1: 'Germany', tag2: 'Ethiopia', tag3: 'Viet Nam' }, { total1: 16.7, total2: 80.7, total3: 21.1, older1: 3.8, older2: 7.0, older3: 2.7, perc1: 22.8, perc2: 8.4, perc3: 12.9, tag1: 'Netherlands', tag2: 'Egypt', tag3: 'Sri Lanka' }, { total1: 62.8, total2: 52.4, total3: 96.7, older1: 14.4, older2: 4.0, older3: 5.9, perc1: 23.0, perc2: 7.8, perc3: 6.1, tag1: 'United Kingdom', tag2: 'South Africa', tag3: 'Philippines' }, { total1: 38.2, total2: 43.2, total3: 66.8, older1: 7.8, older2: 1.8, older3: 9.6, perc1: 20.4, perc2: 4.3, perc3: 13.7, tag1: 'Poland', tag2: 'Kenya', tag3: 'Thailand' }, { total1: 45.5, total3: 154.7, total4: 34.8, older1: 9.5, older3: 10.3, older4: 7.2, perc1: 21.1, perc3: 6.8, perc4: 20.8, tag1: 'Ukraine', tag3: 'Bangladesh', tag4: 'Canada' }, { total1: 143.2, total4: 120.8, older1: 26.5, older4: 11.0, perc1: 18.6, perc4: 9.5, tag1: 'Russian Federation', tag4: 'Mexico' }]; let correlationSource: CorrelationDescription[] = [{ name: "Europe", argumentField: "total1", valueField: "older1", sizeField: "perc1", tagField: "tag1" }, { name: "Africa", argumentField: "total2", valueField: "older2", sizeField: "perc2", tagField: "tag2" }, { name: "Asia", argumentField: "total3", valueField: "older3", sizeField: "perc3", tagField: "tag3" }, { name: "North America", argumentField: "total4", valueField: "older4", sizeField: "perc4", tagField: "tag4" }] @Injectable() export class Service { getPopulationData(): Population[] { return populationData; } getCorrelationSource() : CorrelationDescription[] { return correlationSource; } }
// In real applications, you should not transpile code in the browser. You can see how to create your own application with Angular and DevExtreme here: // https://github.com/DevExpress/devextreme-angular/blob/master/README.md System.config({ transpiler: 'ts', typescriptOptions: { module: "commonjs", emitDecoratorMetadata: true, experimentalDecorators: true }, meta: { 'typescript': { "exports": "ts" } }, paths: { 'npm:': 'https://unpkg.com/' }, map: { 'ts': 'npm:plugin-typescript@7.0.6/lib/plugin.js', 'typescript': 'npm:typescript@2.2.2/lib/typescript.js', '@angular/core': 'npm:@angular/core@4.1.0/bundles/core.umd.js', '@angular/common': 'npm:@angular/common@4.1.0/bundles/common.umd.js', '@angular/compiler': 'npm:@angular/compiler@4.1.0/bundles/compiler.umd.js', '@angular/platform-browser': 'npm:@angular/platform-browser@4.1.0/bundles/platform-browser.umd.js', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic@4.1.0/bundles/platform-browser-dynamic.umd.js', '@angular/http': 'npm:@angular/http@4.1.0/bundles/http.umd.js', '@angular/router': 'npm:@angular/router@4.1.0/bundles/router.umd.js', '@angular/forms': 'npm:@angular/forms@4.1.0/bundles/forms.umd.js', 'rxjs': 'npm:rxjs@5.3.1', 'devextreme': 'npm:devextreme@17.2', 'jszip': 'npm:jszip@3.1.3/dist/jszip.min.js', 'jquery': 'npm:jquery@3.1.1/dist/jquery.min.js', 'devextreme-angular': 'npm:devextreme-angular@17.2' }, packages: { 'app': { main: './app.component.ts', defaultExtension: 'ts' }, 'devextreme': { defaultExtension: 'js' }, 'devextreme-angular': { main: 'index.js', defaultExtension: 'js' } } });
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>DevExtreme Demo</title> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/17.2.3/css/dx.spa.css" /> <link rel="stylesheet" type="text/css" href="https://cdn3.devexpress.com/jslib/17.2.3/css/dx.common.css" /> <link rel="dx-theme" data-theme="generic.light" href="https://cdn3.devexpress.com/jslib/17.2.3/css/dx.light.css" /> <script src="https://unpkg.com/core-js@2.4.1/client/shim.min.js"></script> <script src="https://unpkg.com/zone.js@0.6.25/dist/zone.js"></script> <script src="https://unpkg.com/reflect-metadata@0.1.3/Reflect.js"></script> <script src="https://unpkg.com/systemjs@0.19.31/dist/system.js"></script> <script src="config.js"></script> <script> System.import('app').catch(console.error.bind(console)); </script> </head> <body class="dx-viewport"> <div class="demo-container"> <demo-app>Loading...</demo-app> </div> </body> </html>