我想用owc组件在网页上生成多分组柱状图。可是网上的资料都是单一的柱状图。多分组柱状图的x轴如下。
----------------------------------X轴
| 分组1成员1 | 分组1成员2 | 分组2成员1 | 分组2成员2 | 
|            |            |            |            |
|          分组1          |           分组2         |请高手指教。最好用C#代码,100分。

解决方案 »

  1.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using Microsoft.Office.Interop; 
    namespace Microsoft.Office.Interop.OWC使用指南
    {
     /// <summary>
     /// WebForm1 的摘要说明。
     /// </summary>
     public class WebForm1 : System.Web.UI.Page
     {
      protected System.Web.UI.WebControls.PlaceHolder ChartHolder;
      private Microsoft.Office.Interop.OWC.ChartChartTypeEnum GetChartType(int typeIndex)
      {
       int i;
       Microsoft.Office.Interop.OWC.ChartChartTypeEnum myTE;
       i=typeIndex;
       
       switch(i)
       {
        case 0:
         myTE=Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeColumnClustered;
         return myTE;
        case 1:
         myTE=Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypePie;
         return myTE;
        case 2:
         myTE=Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeSmoothLine;
         return myTE;
        case 3:
         myTE=Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeArea;
         return myTE;
        case 4:
         myTE=Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeRadarLine;
         return myTE;
        default:
         myTE=Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeColumnClustered;
         return myTE;
       }
      }  private void Page_Load(object sender, System.EventArgs e)
      {
       // 在此处放置用户代码以初始化页面
       //创建ChartSpace对象来放置图表
       Microsoft.Office.Interop.OWC.ChartSpace objCSpace = new Microsoft.Office.Interop.OWC.ChartSpaceClass();    //在ChartSpace对象中添加图表,Add方法返回chart对象
       
       Microsoft.Office.Interop.OWC.ChChart   objChart = objCSpace.Charts.Add (0);    //指定图表的类型。类型由Microsoft.Office.Interop.OWC.ChartChartTypeEnum枚举值得到
       //objChart.Type = Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeColumnClustered;
       //上面的是画棒图的方法
       //objChart.Type = Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeSmoothLine;
       //上面的是画平滑曲线的方法此主题相关图片如下:   objChart.Type =Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeRadarLine;
       //上面的是画雷达线的方法
       //objChart.Type =Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypeArea;
       //上面的是画区域线的方法   //objChart.Type =Microsoft.Office.Interop.OWC.ChartChartTypeEnum.chChartTypePie;
       //上面的是画饼图的方法,但是要关掉一些参数,比如
       /*//objChart.Axes[0].HasTitle = true;
       //objChart.Axes[0].Title.Caption = "Y : 数量";
       //objChart.Axes[1].HasTitle = true;
       //objChart.Axes[1].Title.Caption = "X : 月份";    * */此主题相关图片如下:
    此主题相关图片如下:
       //指定图表是否需要图例
       objChart.HasLegend = true;   //给定标题
       objChart.HasTitle = true;
       objChart.Title.Caption= "上半年分布图";   //给定x,y轴的图示说明
       objChart.Axes[0].HasTitle = true;
       objChart.Axes[0].Title.Caption = "Y : 数量";
       objChart.Axes[1].HasTitle = true;
       objChart.Axes[1].Title.Caption = "X : 月份";   //计算数据
       /*categories 和 values 可以用tab分割的字符串来表示*/
       string strSeriesName = "图例 1";
       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';   //添加一个series
       objChart.SeriesCollection.Add(0);   //给定series的名字
       objChart.SeriesCollection[0].SetData (Microsoft.Office.Interop.OWC.ChartDimensionsEnum.chDimSeriesNames,
        + (int)Microsoft.Office.Interop.OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName);   //给定分类
       objChart.SeriesCollection[0].SetData (Microsoft.Office.Interop.OWC.ChartDimensionsEnum.chDimCategories,
        + (int)Microsoft.Office.Interop.OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strCategory);         //给定值
       objChart.SeriesCollection[0].SetData
        (Microsoft.Office.Interop.OWC.ChartDimensionsEnum.chDimvalues,
        (int)Microsoft.Office.Interop.OWC.ChartSpecialDataSourcesEnum.chDataLiteral, strvalue); 
       //输出成GIF文件.
       string strAbsolutePath = (Server.MapPath(".")) + "\\test.gif";
       objCSpace.ExportPicture(strAbsolutePath, "GIF", 600, 350);   //创建GIF文件的相对路径.
       string strRelativePath = "./test.gif";   //把图片添加到placeholder.
       string strImageTag = "<IMG SRC='" + strRelativePath + "'/>";
       ChartHolder.Controls.Add(new LiteralControl(strImageTag));
      }  #region Web Form Designer generated code
      override protected void OnInit(EventArgs e)
      {
       //
       // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
       //
       InitializeComponent();
       base.OnInit(e);
      }
     
      /// <summary>
      /// 设计器支持所需的方法 - 不要使用代码编辑器修改
      /// 此方法的内容。
      /// </summary>
      private void InitializeComponent()
      {    
       this.Load += new System.EventHandler(this.Page_Load);  }
      #endregion }
    }
      

  2.   

    goody9807()给的程序是画单一柱状图:只可以做到在分组中放多个柱.效果如下:
        ___
    ___|  |   __ 
    |  |  |  |  |__
    |  |  |  |  |  |
    ——————————————————————
    | 分组1 | 分组2|.....我要的效果如下:    __                     __              __
     __|  |        __         |  |__        __|  |
    |  |  |       |  |__      |  |  |      |  |  |
    |  |  |       |  |  |     |  |  |      |  |  |
    ——————————————————————---------------
    | 分组1成员1 | 分组1成员2| 分组2成员1 | 分组2成员2|
    |          分组1         |          分组2         |
      

  3.   

    做一个Table,里面有四个格,然后把你用OWC生成的图放在里面就OK了
      

  4.   

    上面的注意修改 chart.Type 为你想要的样式
      

  5.   

    添加两个序列就可以了.
    每个序列里多加几个值,就能实现你要的功能.
    我用Delphi做过.//分组一
    chtCharge.Series[0].Add(88,'一');
    chtCharge.Series[0].Add(88,'二');
    //分组二
    chtCharge.Series[1].Add(100,'一');
    chtCharge.Series[1].Add(100,'二');
      

  6.   

    多添加几个Series就可以了                          
                                chart.SeriesCollection.Add(0);  
    chart.SeriesCollection.Add(1);
    chart.SeriesCollection.Add(2);
    chart.SeriesCollection.Add(3);
      

  7.   

    gwaresoft()不对吗?,弄张图出来。!