C# DevExpress ChartControl用法总结

C# DevExpress ChartControl用法总结

₯近期使用C#+DevExpress制作看板时用到过的ChartControl中的相关图表,在此做个记录(未完)。

1、Bar(柱形图)

Series series1 = new Series("日期", ViewType.Bar)       //右上角Legend显示内容,此处是【日期】
{
	DataSource = 数据库查询结果的DataTable(.DefaultView,可省),
	ArgumentDataMember = "修改时间",       //横坐标参数
	ArgumentScaleType =
	ScaleType.Qualitative,
	LabelsVisibility = DefaultBoolean.True,
};
series1.ValueDataMembers.AddRange("修改条数");           //纵坐标参数
series1.ValueScaleType =ScaleType.Numerical;
SideBySideBarSeriesLabel label =(SideBySideBarSeriesLabel)series1.Label;
label.Position = BarSeriesLabelPosition.Top; //数值所在Label的显示位置
chartControl1.Series.Add(series1);
((BarSeriesView)series1.View).FillStyle.FillMode= FillMode.Gradient; //省略则非渐变

//修改纵/横坐标字体、标签、显隐
((XYDiagram)chartControl1.Diagram).AxisY.Title.Font= new Font("Tahoma", 9);
((XYDiagram)chartControl1.Diagram).AxisX.Title.Font= new Font("Tahoma", 9);
((XYDiagram)chartControl1.Diagram).AxisY.Title.Text= "修改条数";
((XYDiagram)chartControl1.Diagram).AxisX.Title.Text= "修改时间";
((XYDiagram)chartControl1.Diagram).AxisY.Title.Visibility= DefaultBoolean.True;
((XYDiagram)chartControl1.Diagram).AxisX.Title.Visibility= DefaultBoolean.True;

数据源结构:
在这里插入图片描述
效果图:
在这里插入图片描述

2、StackedBar(堆叠柱形图)

List<Series> seriesList = new List<Series>();
 DataTable dt = 数据源;
 foreach (DataRow dr in dt.DefaultView.ToTable(true,"问题类型").Rows)
 {
     Series s = new Series(dr["问题类型"].ToString(), ViewType.StackedBar)
     {
         LegendTextPattern = dr["问题类型"].ToString(),
         ArgumentScaleType = ScaleType.Qualitative,
     };
     foreach (DataRow dr1 in dt.Select("问题类型='" + dr["问题类型"].ToString() + "'"))
         s.Points.Add(new SeriesPoint(dr1["年月"].ToString(), int.Parse(dr1["数量"].ToString())));
     seriesList.Add(s);
 }
     
 foreach (Series sr in seriesList.ToArray())
     chartControl1.Series.Add(sr);
 ((XYDiagram)chartControl1.Diagram).AxisY.Title.Text = "数量";
 ((XYDiagram)chartControl1.Diagram).AxisX.Title.Text = "年月";
 ((XYDiagram)chartControl1.Diagram).AxisY.Title.Visibility = DefaultBoolean.True;
 ((XYDiagram)chartControl1.Diagram).AxisX.Title.Visibility = DefaultBoolean.True;
 ((XYDiagram)chartControl1.Diagram).AxisY.Title.Font = new Font("Tahoma", 9);
 ((XYDiagram)chartControl1.Diagram).AxisX.Title.Font = new Font("Tahoma", 9);
 ((XYDiagram)chartControl1.Diagram).AxisY.Title.Alignment = StringAlignment.Far;
 ((XYDiagram)chartControl1.Diagram).AxisX.Title.Alignment = StringAlignment.Far;

数据源结构:
在这里插入图片描述
效果图:
在这里插入图片描述

3、Doughnut(环形图)

List<SeriesPoint> spList = new List<SeriesPoint>();
SeriesTitle st = new SeriesTitle();
string[] ss = new string[] { "d1","d2"};
DataTable dt1 = 数据源1;
DataTable dt2 = 数据源2;
for (int i= 0;i < ss.Length; i++)
{
    chartControl1.Series.Add(new Series(ss[i], ViewType.Doughnut){
        SeriesPointsSorting = SortingMode.Ascending,
        SeriesPointsSortingKey = SeriesPointKey.Argument,
        LegendTextPattern = "{A}:{VP:P2}",
    });
}
foreach (Series se in chartControl1.Series)
{
    se.Label.TextPattern = "{A}:{VP:P2}:{V}";
    ((DoughnutSeriesLabel)se.Label).Position = PieSeriesLabelPosition.TwoColumns;
    ((DoughnutSeriesLabel)se.Label).ResolveOverlappingMode = ResolveOverlappingMode.Default;
    ((DoughnutSeriesLabel)se.Label).ResolveOverlappingMinIndent = 5;
    ((DoughnutSeriesView)se.View).TotalLabel.Visible = true;
    ((DoughnutSeriesView)se.View).TotalLabel.TextPattern = "{TV}";
    switch (se.Name)
    {
        case "d1":
                st.Text = "d1";
                foreach(DataRow dr1 in dt1.Rows)
                    se.Points.Add(new SeriesPoint(dr1["主体"].ToString(), dr1["数量"]));
                ((DoughnutSeriesView)se.View).Titles.Add(st);
                break;
            case "d2":
                st.Text = "d2";
                foreach (DataRow dr2 in dt2.Rows)
                    se.Points.Add(new SeriesPoint(dr2["类型"].ToString(), dr2["数量"]));
                ((DoughnutSeriesView)se.View).Titles.Add(st);
                break;
     }
 }
 chartControl1.Legend.Visibility = DefaultBoolean.False;

数据源结构:(两个环形图的数据源内容不一样,结构一样)
在这里插入图片描述
效果图:
在这里插入图片描述

4、Gantt(甘特图)

注:【步骤A】为其他步骤的计算基础,【步骤B】为开始步骤,【步骤A】为最终步骤。

chartControl1.DataSource= dt.DefaultView;   
for(int i = 0; i < dt.Rows.Count; i++)
{
	Series s= new Series(dt.Rows[i]["主体"].ToString(),ViewType.Gantt);
	s.ValueScaleType= ScaleType.DateTime;
	s.Points.Add(new SeriesPoint(dt.Columns["步骤A"].ColumnName.ToString(),
	new DateTime[] { DateTime.Parse(dt.Rows[i]["步骤B"].ToString()),DateTime.Parse(dt.Rows[i]["步骤A"].ToString())
	}));
	
	s.Points.Add(new SeriesPoint(dt.Columns["步骤B"].ColumnName.ToString(),
	new DateTime[] { DateTime.Parse(dt.Rows[i]["步骤B"].ToString()),DateTime.Parse(dt.Rows[i]["步骤C"].ToString())
	}));
	
	s.Points.Add(new SeriesPoint(dt.Columns["步骤C"].ColumnName.ToString(),
	new DateTime[] { DateTime.Parse(dt.Rows[i]["步骤C"].ToString()),DateTime.Parse(dt.Rows[i]["步骤D"].ToString())
	}));
	
	s.Points.Add(new SeriesPoint(dt.Columns["步骤D"].ColumnName.ToString(),
	new DateTime[] { DateTime.Parse(dt.Rows[i]["步骤D"].ToString()),DateTime.Parse(dt.Rows[i]["步骤E"].ToString())
	}));
	
	s.Points.Add(new SeriesPoint(dt.Columns["步骤E"].ColumnName.ToString(),
	new DateTime[] { DateTime.Parse(dt.Rows[i]["步骤E"].ToString()),DateTime.Parse(dt.Rows[i]["步骤A"].ToString())
	}));
	chartControl1.Series.Add(s);
	((GanttSeriesView)s.View).BarWidth= 0.3;
}
	

数据源结构:
在这里插入图片描述
效果图:在这里插入图片描述

DevExpress ChartControl 是一个功能强大的图表控件,可用于在应用程序中创建各种类型的曲线图。 使用DevExpress ChartControl,我们可以轻松地添加和配置曲线图,以直观地显示数据和趋势。曲线图可以用于展示时间序列数据、趋势分析、模式识别等。 在使用DevExpress ChartControl时,我们可以通过以下几个步骤来创建和配置曲线图: 1. 数据绑定:首先,我们需要将数据源与ChartControl绑定。可以使用多种数据源,如数据库、集合、XML等。通过设置数据系列的名称、标签、数据字段等,我们可以将数据源中的数据与图表关联起来。 2. 图表类型选择:ChartControl提供了多种类型的曲线图,如折线图、散点图、面积图等。我们可以根据需求选择合适的图表类型,并进行相关的配置。 3. 样式设置:可以根据需要,配置曲线图的外观样式,如背景颜色、图表边框、曲线颜色、标签样式等。通过设置图例,我们可以显示曲线图中的数据系列名称和相应的颜色。 4. 标题和轴设置:我们可以自定义曲线图的标题,为X轴和Y轴添加标签和标题,调整刻度范围、刻度间隔等。可以根据需要,显示或隐藏网格线、刻度线等。 5. 功能和交互性:ChartControl支持各种功能和交互性,如数据筛选、缩放、滚动、鼠标提示、图表导出等。我们可以根据需求,启用或禁用这些功能。 使用DevExpress ChartControl,我们可以轻松地创建出具有丰富功能和精美外观的曲线图。无论是在桌面应用程序还是Web应用程序中,DevExpress ChartControl都是一个强大的选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值