数据源自于XML文件,现在要做出一个柱形图表来显示..第一次做统计表,大概怎么做,请大家给个思路吧谢谢.

解决方案 »

  1.   

    ZedGraph.dll免费开源,处理图表很强大,楼主可以去搜下,应用很简单,
    能够处理很多类型,比如线图,柱图等等
      

  2.   

    获取XML到数据集。
    zedgraph,owc,ms chart等控件都可实现
    参考
      

  3.   

    ZedGraph.dll,不能在图上显示数值啊..我想让图上也显示数值,这样更加直观一点.
      

  4.   

    用dundas做也可以的  比较方便 下面是一个例子:(1)创建一个Windows窗体应用程序,命名为ColumnChart。(2)添加对DundasWinChart的引用,如图17.26所示。                         图17.26  添加引用(3)在代码中添加如下引用。using Dundas.Charting.WinControl;(4)修改“Form1.cs”的代码如下。public partial class Form1 : Form{    public Form1()    {        InitializeComponent();    }    private void Form1_Load(object sender, EventArgs e)    {        //创建一个Chart类型的变量,表示一幅图        Chart chart = new Chart();        //Series表示图表中的一个系列,这里只添加一幅默认的图表        chart.Series.Add("Default");        //设置该图表的样式为柱状图        chart.Series["Default"].Type = SeriesChartType.Column;        //为其添加数据        chart.Series["Default"].Points.Add(15);        chart.Series["Default"].Points.Add(8);        chart.Series["Default"].Points.Add(14);        chart.Series["Default"].Points.Add(9);        chart.Series["Default"].Points.Add(16);        chart.Series["Default"].Points.Add(12);        //ChartAreas表示图表显示的区域,添加一个默认的区域        chart.ChartAreas.Add("Default");                    //将默认图表的显示区域设定为新添加的显示区域        chart.Series["Default"].ChartArea ="Default";        //定义图片控件的窗体填充方式        chart.Dock = DockStyle.Fill;        //向窗体中添加该控件        Controls.Add(chart);    }}3.运行结果
    运行程序,结果如图17.27所示。dundas下载地址:
    http://download.csdn.net/source/1672965
      

  5.   

    我的数据源是XML,可以详细说说吗?
      

  6.   

    OWC做的
     protected void btnMoreChart_Click(object sender, EventArgs e)
            {
                //创建ChartSpace对象来放置图表
                OWC.ChartSpace objCSpace = new OWC.ChartSpaceClass();            //是否显示图例
                objCSpace.HasChartSpaceLegend = true;
                objCSpace.ChartLayout = ChartChartLayoutEnum.chChartLayoutVertical;            //在ChartSpace对象中添加图表,Add方法返回chart对象
                OWC.ChChart objChart = objCSpace.Charts.Add(0);
                
                //objChart.HeightRatio = 50;
                //指定图为柱形图
                //给定标题
                objChart.HasTitle = true;
                objChart.Title.Caption = "上半年分布图";            //给定x,y轴的图示说明
                objChart.Axes[0].HasTitle = true;
                objChart.Axes[0].Title.Caption = "X : 月份";
                objChart.Axes[1].HasTitle = true;
                objChart.Axes[1].Title.Caption = "Y : 数量";
                objChart.Axes[1].MajorUnit = 2;            //计算数据
                /*categories 和 values 可以用tab分割的字符串来表示*/
                string strSeriesName = "我的测试";
                string strSeriesName1 = "LAR";
                string strCategory = "1" + '\t' + "2" + '\t' + "3" + '\t' + "4" + '\t' + "5" + '\t' + "6" + '\t';
                string strValue = "9" + '\t' + "8" + '\t' + "4" + '\t' + "10" + '\t' + "12" + '\t' + "6" + '\t';
                //string strValue1 = "0.038%" + '\t' + ".034%" + '\t' + ".026%" + '\t' + ".036%" + '\t' + ".040%" + '\t' + ".033%" + '\t';            /*柱形图*/
                //添加一个series
                objChart.SeriesCollection.Add(0);
                
                objChart.SeriesCollection[0].Type = OWC.ChartChartTypeEnum.chChartTypeColumnClustered;
                //给定series的名字
                objChart.SeriesCollection[0].SetData(OWC.ChartDimensionsEnum.chDimSeriesNames,
                    (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName);            //给定分类
                objChart.SeriesCollection[0].SetData(OWC.ChartDimensionsEnum.chDimCategories,
                    (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strCategory);            //给定objChart[0]的值
                OWC.ChSeries sDispDppm = objChart.SeriesCollection[0];
                sDispDppm.SetData
                    (OWC.ChartDimensionsEnum.chDimValues,
                    (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strValue);            //在ChartSpace对象中添加图表,Add方法返回chart对象
                OWC.ChChart objChart1 = objCSpace.Charts.Add(0);            //图表占据整个图表工作区的50%,这个起作用,必须有多个图表
                //objChart1.HeightRatio = 50;
                
                //给定标题
                objChart1.HasTitle = true;
                objChart1.Title.Caption = "下半年分布图";            //数值轴的显示格式
                objChart1.Axes[1].NumberFormat = "0.00%";            //数值轴的主要单位
                objChart1.Axes[1].MajorUnit = 0.01;            //重新定义坐标轴的最大刻度 
                if (iYAxis_Maximum > 0)
                {
                    objChart1.Axes[1].Scaling.Maximum = iYAxis_Maximum;
                    objChart1.Axes[1].Scaling.HasAutoMaximum = false;
                }
                else
                {
                    objChart1.Axes[1].Scaling.HasAutoMaximum = true;
                }            //重新定义坐标轴的最小刻度 
                if (iYAxis_Minmum > 0)
                {
                    objChart1.Axes[1].Scaling.Minimum = iYAxis_Minmum;
                    objChart1.Axes[1].Scaling.HasAutoMinimum = false;
                }
                else
                {
                    objChart1.Axes[1].Scaling.HasAutoMinimum = true;
                }            strSeriesName = "我的测试";
                strSeriesName1 = "LAR";
                strCategory = "1" + '\t' + "2" + '\t' + "3" + '\t' + "4" + '\t' + "5" + '\t' + "6" + '\t';
                string strValue1 = "0.038%" + '\t' + ".034%" + '\t' + ".026%" + '\t' + ".036%" + '\t' + ".040%" + '\t' + ".033%" + '\t';            /*折线图*/
                //再增加一个Series
                OWC.ChSeries sDispLar = objChart1.SeriesCollection.Add(0);            //系列样式
                sDispLar.Type = OWC.ChartChartTypeEnum.chChartTypeLineMarkers;            //显示系列坐标值
                objChart1.SeriesCollection[0].DataLabelsCollection.Add();
                objChart1.SeriesCollection[0].DataLabelsCollection[0].NumberFormat = "0.00%";
                objChart1.SeriesCollection[0].DataLabelsCollection[0].HasValue = true;            //给定series的名字
                sDispLar.SetData(OWC.ChartDimensionsEnum.chDimSeriesNames,
                    (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName1);            //给定分类
                objChart.SeriesCollection[0].SetData(OWC.ChartDimensionsEnum.chDimCategories,
                    (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strCategory);            //给定objChart[1]的值
                sDispLar.SetData
                    (OWC.ChartDimensionsEnum.chDimValues,
                    (int)OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strValue1);
                //输出成GIF文件.
                string strAbsolutePath = (Server.MapPath(".")) + "\\Temp\\test.png";
                objCSpace.ExportPicture(strAbsolutePath, "PNG", 600, 350);
                //创建GIF文件的相对路径.
                string strRelativePath = "./Temp/test.png";            //显示图片
                Image1.ImageUrl = strRelativePath.ToString();
            }
      

  7.   

    想标红还不行
    objChart1.SeriesCollection[0].DataLabelsCollection[0].HasValue = true;就是这句
      

  8.   


    当然可以的 dundas功能非常强大 要加上数字的话就需要在代码里面多做些改动了 要稍微复杂点 上面就是给你举个例子 楼主自己去研究研究吧 这会儿有点忙 没空跟你写那个例子 抱歉 
      

  9.   

    你的资源需要分才能下,我没分啊,帮我发一份吧[email protected]谢谢你
      

  10.   


    圖上可以有文字的
    好像叫TEXTOBJECT
      

  11.   

    網上有DEMO程序下,
    找到你要的效果
    仔細看一下代碼 就好了
      

  12.   

    你可以使用微软的图表控件
    Microsoft Chart Controls for Microsoft .NET Framework 3.5,
    下载地址:
    http://www.microsoft.com/downloads/details.aspx?FamilyId=130F7986-BF49-4FE5-9CA8-910AE6EA442C&displaylang=en