Pull down to refresh...
Release to refresh...
Refreshing...
-
Data Grids / Data Management
-
Data Grid
- Overview
-
Data Binding
-
Filtering
- Sorting
-
Editing
-
Grouping
-
Selection
- Focused Row
- Paging
-
Scrolling
-
Columns
-
Master-Detail
-
Data Summaries
-
Drag & Drop
-
Export to PDF
-
Export to Excel
- Appearance
-
Customization
- State Persistence
-
Adaptability
-
Keyboard Navigation
- Right-To-Left Support
-
Tree List
- Overview
-
Data Binding
-
Filtering
- Sorting
-
Editing
-
Selection
- Focused Row
- Paging
-
Columns
- Drag & Drop
- State Persistence
- Adaptability
-
Keyboard Navigation
-
Card View
-
Pivot Grid
- Overview
-
Data Binding
-
Field Management
-
Data Summaries
- Drill Down
- Filtering
-
Scrolling
-
Export to Excel
- Chart Integration
- Customization
- State Persistence
-
Filter Builder
-
-
Data Visualization
-
Charts
- Overview
-
Data Binding
-
Common Concepts
-
Axis
-
Aggregation
-
Tooltips
-
Selection
-
Customization
-
Zooming
-
Export
-
-
Area Charts
-
Bar Charts
- Bullet Charts
-
Doughnut Charts
-
Financial Charts
-
Funnel and Pyramid Charts
-
Line Charts
- Pareto Chart
-
Pie Charts
-
Point Charts
-
Polar and Radar Charts
-
Range Charts
- Sankey Chart
-
Sparkline Charts
-
Tree Map
-
Gauges
- Overview
-
Runtime update
-
Bar Gauge
-
Circular Gauge
-
Linear Gauge
-
Diagram
- Overview
-
Data Binding
-
Featured Shapes
-
Custom Shapes
-
Document Capabilities
-
User Interaction
- UI Customization
- Adaptability
-
-
Scheduling / Planning
-
Scheduler
- Overview
-
Data Binding
-
Views
-
Appointments
-
Timetable
- Editing
-
Grouping
- Virtual Scrolling
- Drag & Drop
-
Customization
- Adaptability
-
Gantt
- Overview
- Data Binding
-
Filtering
- Sorting
- Strip Lines
- Export to PDF
- Validation
-
Customization
-
-
Reporting
-
AI-powered Extensions
-
Interaction
-
Report Types
-
Data binding
-
Real-life Reports
-
Layout Features
-
Report Controls
-
Web-specific Features
-
-
Rich Text Editor
- Overview
- Load/Save
- Document Protection
-
Templates
- Autocorrect
-
Customization
- Simple View
-
Spreadsheet
- Overview
-
Open a Document
- Export And Printing
-
Features
-
UI Customization
-
Messaging
-
WYSIWYG Editor
-
Forms
-
Data Editors
- Overview
-
Common Concepts
-
Calendar
- Check Box
- Color Box
- Date Box
-
Date Range Box
-
Number Box
- Radio Group
-
Range Selector
- Range Slider
- Slider
- Speech To Text
- Switch
- Text Area
- Text Box
-
Drop-Downs
- Autocomplete
-
Drop Down Box
-
Select Box
-
Tag Box
-
Lookup
-
Buttons
-
File Upload / File Management
-
File Manager
- Overview
-
File System Types
-
Customization
-
File Uploader
-
-
Popup and Notifications
-
Navigation
- Overview
- Accordion
-
Context Menu
-
Menu
- Multi View
-
Drawer
-
Tab Panel
-
Tabs
-
Toolbar
-
Stepper
- Pagination
-
List
-
Tree View
- Right-to-Left Support
-
Layout
-
Tile View
- Splitter
-
Gallery
- Scroll View
-
-
Interactive Wrappers
-
Sortable
- Resizable
-
-
Progress Indicators
-
Maps
- Overview
-
Map
-
Vector Map
-
Data Binding
- Multiple Layers
-
Markers
- Legend
-
Zooming and Panning
-
Customization
-
-
Localization
Related Demos:
Your search did not match any results.
Loading...
Charts - Pareto Chart
You can use DevExtreme Chart to visualize data as a Pareto chart and display individual values along with their cumulative totals. In this demo, individual values are numbers of complaints and cumulative totals are given in percentages.
Backend API
x
@(Html.DevExtreme().Chart() .ID("chart") .Palette(VizPalette.HarmonyLight) .Title("Pizza Shop Complaints") .ArgumentAxis(a => a .Label(l => l .OverlappingBehavior(OverlappingBehavior.Stagger) ) ) .Tooltip(t => t .Enabled(true) .Shared(true) .CustomizeTooltip( @<text> function(info) { return { html: "<div><div class='tooltip-header'>" + info.argumentText + "</div>" + "<div class='tooltip-body'><div class='series-name'>" + "<span class='top-series-name'>" + info.points[0].seriesName + "</span>" + ": </div><div class='value-text'>" + "<span class='top-series-value'>" + info.points[0].valueText + "</span>" + "</div><div class='series-name'>" + "<span class='bottom-series-name'>" + info.points[1].seriesName + "</span>" + ": </div><div class='value-text'>" + "<span class='bottom-series-value'>" + info.points[1].valueText + "</span>" + "% </div></div></div>" }; } </text>) ) .ValueAxis(a => { a.Add() .Name("frequency") .Position(Position.Left) .TickInterval(300); a.Add() .Name("percentage") .Position(Position.Right) .ShowZero(true) .Label(l => l .CustomizeText( @<text> function(info) { return info.valueText + "%"; } </text>) ) .ConstantLines(c => { c.Add() .Value(80) .Color("#fc3535") .DashStyle(DashStyle.Dash) .Width(2) .Label(l => l.Visible(false)); }) .TickInterval(20) .ValueMarginsEnabled(false); }) .CommonSeriesSettings(s => s .ArgumentField("complaint") ) .Series(s => { s.Add() .Type(SeriesType.Bar) .ValueField("count") .Axis("frequency") .Name("Complaint frequency") .Color("#fac29a"); s.Add() .Type(SeriesType.Spline) .ValueField("cumulativePercentage") .Axis("percentage") .Name("Cumulative percentage") .Color("#6b71c3"); }) .Legend(l => l .VerticalAlignment(VerticalEdge.Top) .HorizontalAlignment(HorizontalAlignment.Center) ) .DataSource(d => d.Mvc().LoadAction("GetComplaintsData")))xxxxxxxxxxusing DevExtreme.AspNet.Data;using DevExtreme.AspNet.Mvc;using DevExtreme.NETCore.Demos.Models;using DevExtreme.NETCore.Demos.Models.SampleData;using Microsoft.AspNetCore.Mvc;using System;using System.Collections.Generic;using System.Linq;namespace DevExtreme.NETCore.Demos.Controllers { public class ChartsController : Controller { public ActionResult ParetoChart() { return View(); } public ActionResult Overview() { return View(); } [HttpGet] public IEnumerable<object> GetComplaintsData() { var dataSource = new List<object>(); var sortedParetoData = SampleData.ParetoChartData.OrderByDescending(i => i.count); var totalCount = sortedParetoData.Sum(i => i.count); var cumulativeCount = 0; foreach(var item in sortedParetoData) { cumulativeCount += item.count; dataSource.Add(new { item.complaint, item.count, cumulativePercentage = Math.Round((double)cumulativeCount * 100 / totalCount) }); } return dataSource; } }}xxxxxxxxxxusing System;using System.Collections.Generic;using System.Linq;namespace DevExtreme.NETCore.Demos.Models { public class ParetoChartData { public String complaint { get; set; } public int count { get; set; } }}xxxxxxxxxx#chart { height: 440px;}.tooltip-header { margin-bottom: 5px; font-size: 16px; font-weight: 500; padding-bottom: 5px; border-bottom: 1px solid #c5c5c5;}.tooltip-body { width: 170px;}.tooltip-body .series-name { font-weight: normal; opacity: 0.6; display: inline-block; line-height: 1.5; padding-right: 10px; width: 126px;}.tooltip-body .value-text { display: inline-block; line-height: 1.5; width: 30px;}To create a Pareto chart you must:
- Configure a Bar series and assign your primary data to this series (specify series.valueField property).
- Add a Line or Spline series and assign cumulative total values to this series.
- Specify valueAxis.constantLines to illustrate Pareto principle correlations (80/20).