在c#系列堆积的酒吧

时间:2014-02-24 00:18:39

标签: c# charts bar-chart stacked-chart

我正在制作一个需要像c#中的堆积条形图一样的系统 我搜索了一些堆积条形图教程,试验代码等但似乎我不能达到我想要的输出,我搜索的大部分教程都是基本的条形图。现在我在datagridview(彩色单元格)中做了这个,但是从数据网格视图中制作堆积条形图似乎有点愚蠢。

图片链接:http://tinypic.com/r/v8oe8k/8

继续我的问题,看看这张照片,这是否有可能在堆积条形图中做到这一点?

1。)系列可以继续使用第一列中没有其他堆栈的另一列吗? (系列2)

2。)一个系列可以堆叠在一个空的空间? (系列5)

3。)如果上述两项是可能的,多系列条形图也可以吗? (可选)

如果可以,请帮助我(提供示例代码片段将是一个很大的帮助)

谢谢你,祝你有愉快的一天

编辑:继承我的代码:

        chart1.Series.Add("Series 1");
        chart1.Series.Add("Series 2");
        chart1.Series.Add("Series 3");
        chart1.Series.Add("Series 4");
        chart1.Series.Add("Series 5");
        chart1.Series["Series 1"].ChartType = SeriesChartType.StackedColumn;
        chart1.Series["Series 2"].ChartType = SeriesChartType.StackedColumn;
        chart1.Series["Series 3"].ChartType = SeriesChartType.StackedColumn;
        chart1.Series["Series 4"].ChartType = SeriesChartType.StackedColumn;
        chart1.Series["Series 5"].ChartType = SeriesChartType.StackedColumn;

        chart1.Series["Series 1"].Points.AddXY(1, 50);
        chart1.Series["Series 2"].Points.AddXY(1, 100);
        chart1.Series["Series 2"].Points.AddXY(2, 50);
        chart1.Series["Series 3"].Points.AddXY(2, 200);            
        chart1.Series["Series 3"].Points.AddXY(3, 100);
        chart1.Series["Series 4"].Points.AddXY(3, 50);
        chart1.Series["Series 5"].Points.AddXY(5, 150);

2 个答案:

答案 0 :(得分:1)

要删除空白区域,每个X值必须在所有系列中具有相同数量的点:

    chart1.Series["Series 1"].Points.AddXY(1, 50);
    chart1.Series["Series 2"].Points.AddXY(1, 100);
    chart1.Series["Series 3"].Points.AddXY(1, 0);   
    chart1.Series["Series 4"].Points.AddXY(1, 0);
    chart1.Series["Series 5"].Points.AddXY(1, 0); 

    chart1.Series["Series 1"].Points.AddXY(2, 0);     
    chart1.Series["Series 2"].Points.AddXY(2, 50);
    chart1.Series["Series 3"].Points.AddXY(2, 200);   
    chart1.Series["Series 4"].Points.AddXY(2, 0); 
    chart1.Series["Series 5"].Points.AddXY(2, 0); 

    chart1.Series["Series 1"].Points.AddXY(3, 0);
    chart1.Series["Series 2"].Points.AddXY(3, 0);         
    chart1.Series["Series 3"].Points.AddXY(3, 100);
    chart1.Series["Series 4"].Points.AddXY(3, 50);
    chart1.Series["Series 5"].Points.AddXY(3, 0);

    chart1.Series["Series 1"].Points.AddXY(5, 0);
    chart1.Series["Series 2"].Points.AddXY(5, 0);
    chart1.Series["Series 3"].Points.AddXY(5, 0);
    chart1.Series["Series 4"].Points.AddXY(5, 0);
    chart1.Series["Series 5"].Points.AddXY(5, 150);

答案 1 :(得分:-1)

尝试创建自定义控件以绘制条形图。查看有关创建自己的控件的一些教程。然后覆盖控件的绘画并绘制图表。

自定义控制教程: http://techymedia.com/post/2013/04/21/How-to-create-custom-Control-In-C-Sharp-Tutorial-Step-By-Step.aspx(在创建控件时,您可以添加自己的变量,然后在paint方法中绘制图表。)

图形控制: http://www.codeproject.com/Articles/5431/A-flexible-charting-library-for-NET