C#下利用devexpress中chart插件实现柱状图

.Net下各种第三方的Chart图组件很多,笔者在三维管廊监测中使用的Devexpress插件实现的柱状图,效果如下图: 


具体的方法:
1、在xaml中引入Devexpress插件
xml命名空间引入
xmlns:dxc="http://schemas.devexpress.com/winfx/2008/xaml/charts"
chart插件引入
<dxc:ChartControl Name="alarmChart" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="4" Width="980" Background="#001f55"  Foreground="#03ffea"  Margin="20,0,20,19">           
        </dxc:ChartControl>
2、柱状图所需的数据
数据从数据库中取出,包括报警类型和报警数量
 DataTable dt;      
            dt = WPFHelp.Instance.DbInit.queryTablesDGSYS("select 报警类型 from STC_报警类型表");
3、创建chart各属性,并赋值
Brush brush;
            BrushConverter brushConverter = new BrushConverter();
            brush = (Brush)brushConverter.ConvertFromString("#03ffea");//"#17acae");
            Diagram diagram = null;
            diagram = new XYDiagram2D();
            AxisY2D asisy = new AxisY2D();
            AxisTitle asisTitle = new AxisTitle();
            asisTitle.Content = "统计值";
            asisTitle.Foreground = brush;
            asisy.Title = asisTitle;
            asisy.Brush = brush;
            //Y轴刻度尺颜色
            asisy.ActualLabel.Foreground= brush;
            ((XYDiagram2D)diagram).AxisY = asisy;
            _title = "";// "报警统计";

            AxisX2D asisx = new AxisX2D();
            asisx.Brush = brush;
            ((XYDiagram2D)diagram).AxisX = asisx;
            asisx.ActualLabel.Foreground = brush;
            this.LoadChartData(_title, diagram, "直方图", dt);
4、LoadChartData 函数定义
 private void LoadChartData(string title, Diagram diagram, string seriesType, DataTable dtable)
        {
            try
            {
                if (dtable == null || dtable.Rows.Count == 0)
                {
                    return;
                }

                //透明
                this.alarmChart.Legend = null;
                if (!(diagram is SimpleDiagram2D))
                {
                    Legend legend = new Legend();
                    legend.ReverseItems = true;
                    this.alarmChart.Legend = legend;
                }

                this.alarmChart.Diagram = diagram;
                Title t = new Title();
                t.Content = title;
                t.FontSize = 15;
                Brush brush;
                BrushConverter brushConverter = new BrushConverter();
                brush = (Brush)brushConverter.ConvertFromString("#FF0000");//"#17acae");
                t.Foreground = brush;
                t.HorizontalAlignment = HorizontalAlignment.Center;
                alarmChart.Titles.Clear();
                alarmChart.Titles.Add(t);
                for (int i = 0; i < dtable.Rows.Count; i++)
                {
                    Series series  = new BarSideBySideSeries2D();//= CreateSeries(seriesType);
                    series.DisplayName = dtable.Rows[i][0].ToString();
                    series.AnimationAutoStartMode = AnimationAutoStartMode.SetStartState;
                    //series.FontStyle = new FontStyle();

                    for (int j = 1; j < dtable.Columns.Count; j++)
                    {
                        SeriesPoint seriesPoint = new SeriesPoint();
                        seriesPoint.Argument = dtable.Rows[i][0].ToString();// dtable.Columns[0].ColumnName.ToString();
                        seriesPoint.Value = double.Parse(dtable.Rows[i][j].ToString());
                       
                        series.Points.Add(seriesPoint);
                        
                    }
                    alarmChart.Diagram.Series.Add(series);
                }
                Title t1 = new Title();
                t1.Content = "数据项".PadRight(50);
                t1.FontSize = 14;
                t1.Foreground = brush;
                t1.HorizontalAlignment = HorizontalAlignment.Right;
                t1.Dock = Dock.Bottom;
                alarmChart.Titles.Add(t1);
            }
            catch (Exception ex)
            {
                
            }
        }









  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,下面我给您介绍一下使用C# DevExpress.XtraCharts实现热力图的步骤和示例代码。 首先,您需要在项目引用DevExpress.XtraCharts库,然后在需要使用热力图的窗体添加一个DevExpress.XtraCharts.ChartControl控件。 接下来,您需要创建一个数据源,用于存储热力图的数据。数据源可以是一个DataTable对象,也可以是一个List集合,这里以DataTable为例。假设您的数据源包含三列数据:X轴坐标、Y轴坐标、颜色值,代码如下: ```csharp DataTable dt = new DataTable(); dt.Columns.Add("X", typeof(double)); dt.Columns.Add("Y", typeof(double)); dt.Columns.Add("Value", typeof(double)); ``` 然后,您需要向数据源添加数据。以下是添加数据的示例代码: ```csharp Random rand = new Random(); for (int i = 0; i < 100; i++) { dt.Rows.Add(rand.NextDouble(), rand.NextDouble(), rand.NextDouble()); } ``` 接下来,您需要在ChartControl控件添加一个热力图系列。代码如下: ```csharp Series series = new Series("Heatmap", ViewType.HeatMap); series.ArgumentScaleType = ScaleType.Numerical; series.ValueScaleType = ScaleType.Numerical; series.DataSource = dt; series.ArgumentDataMember = "X"; series.ValueDataMember = "Y"; series.ColorDataMember = "Value"; chartControl1.Series.Add(series); ``` 最后,在窗体加载事件,将热力图系列添加到ChartControl控件。代码如下: ```csharp private void Form1_Load(object sender, EventArgs e) { chartControl1.Series.Clear(); chartControl1.Titles.Add(new ChartTitle() { Text = "Heatmap" }); Series series = new Series("Heatmap", ViewType.HeatMap); series.ArgumentScaleType = ScaleType.Numerical; series.ValueScaleType = ScaleType.Numerical; series.DataSource = dt; series.ArgumentDataMember = "X"; series.ValueDataMember = "Y"; series.ColorDataMember = "Value"; chartControl1.Series.Add(series); } ``` 这样,热力图就显示在ChartControl控件了。您可以根据需要对热力图进行样式和布局的调整。 希望这个示例代码可以帮助您实现热力图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凡梦_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值