none
OWC 如何实现X轴双刻度? RRS feed

  • 问题

  • 在CSDN有发贴

    链接地址:http://topic.csdn.net/u/20100511/08/f0afd614-0457-4a5a-9a62-c5e6c232a229.html?99034

    例 如: X轴上以有月度,然后月分组为季度。实现X轴双刻度。

    图1.
    
    
    
    
    
    图1为Excel表中作成的一个双轴线-柱状堆积图。可以看出X轴上有两个刻度,
    
    一个为使用材料,二个为材料使用日期。
    
    图2.
    
    
    
    
    图2为ASP.NET中利用OWC生成的一个图,大部分效果以达到要求,就是X轴双刻未能实现,
    
    
    请大家帮忙,如何实现X轴双刻度?
    
    
    代码如下:
    

     

     

     //创建ChartSpace对象来放置图表
    
     ChartSpace chartSpace = new
     ChartSpaceClass();
    
     //是否显示图例
    
     chartSpace.HasChartSpaceLegend = true
    ;
    
     //在ChartSpace对象中添加图表,Add方法返回Chart对象
    
    
     ChChart chChart = chartSpace.Charts.Add(0);
    
     //给定标题
    
    
     chChart.HasTitle = true
    ;
     chChart.Title.Caption = "材料不良率"
    ;
    
     //给定x,y轴的图示说明
    
     chChart.Axes[0].HasTitle = true
    ;
     chChart.Axes[0].Title.Caption = "X : 日期"
    ;
    
     chChart.Axes[1].HasTitle = true
    ;
     chChart.Axes[1].Title.Caption = "Y : 不良率"
    ;
    
     /*柱状堆积图*/
    
     //添加系列设定图表类型
    
    
     chChart.SeriesCollection.Add(0);
     chChart.SeriesCollection[0].Type = ChartChartTypeEnum.chChartTypeColumnStacked;
     //系列PG1
    
     //给定系列的名字
    
     
     chChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimSeriesNames,
      +(int
    )ChartSpecialDataSourcesEnum.chDataLiteral, "PG1"
    );
    
     //给定分类
    
    
     chChart.SeriesCollection[0].SetData(ChartDimensionsEnum.chDimCategories,
      +(int
    )ChartSpecialDataSourcesEnum.chDataLiteral, "材料A\t材料B\t材料C\t材料D"
    );
    
     //给定系列的值
    
    
     chChart.SeriesCollection[0].SetData
      (ChartDimensionsEnum.chDimValues,
      (int
    )ChartSpecialDataSourcesEnum.chDataLiteral, "0.01\t0\t0.02\t0.02"
    );
    
     //系列PD1
    
     //给定系列的名字
    
    
     chChart.SeriesCollection.Add(1);
     chChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimSeriesNames,
      +(int
    )ChartSpecialDataSourcesEnum.chDataLiteral, "PD1"
    );
    
     //给定分类
    
     chChart.SeriesCollection[1].SetData(ChartDimensionsEnum.chDimCategories,
      +(int
    )ChartSpecialDataSourcesEnum.chDataLiteral, "材料A\t材料B\t材料C\t材料D"
    );
    
     //给定系列的值
    
     chChart.SeriesCollection[1].SetData
      (ChartDimensionsEnum.chDimValues,
      (int
    )ChartSpecialDataSourcesEnum.chDataLiteral, "0\t0.03\t0.02\t0.03"
    );
    
    
     //系列PB1
    
     //给定系列的名字
    
     chChart.SeriesCollection.Add(2);
     chChart.SeriesCollection[2].SetData(ChartDimensionsEnum.chDimSeriesNames,
      +(int
    )ChartSpecialDataSourcesEnum.chDataLiteral, "PB1"
    );
    
     //给定分类
    
     chChart.SeriesCollection[2].SetData(ChartDimensionsEnum.chDimCategories,
      +(int
    )ChartSpecialDataSourcesEnum.chDataLiteral, "材料A\t材料B\t材料C\t材料D"
    );
    
     //给定系列的值
    
    chChart.SeriesCollection[2].SetData
      (ChartDimensionsEnum.chDimValues,
      (int
    )ChartSpecialDataSourcesEnum.chDataLiteral, "0.01\t0.01\t0.01\t0.02"
    );
    
    
     /*折线图*/
    
     //再增加一个系列
    
     //设定图表类型
    
     chChart.SeriesCollection.Add(3);
     chChart.SeriesCollection[3].Type = ChartChartTypeEnum.chChartTypeLineMarkers ;
    
    
     //主次网格线不显示
    
     chChart.Axes[1].HasMinorGridlines = false
    ;
     chChart.Axes[1].HasMajorGridlines = false
    ;
    
     //设定Y轴格式
    
     chChart.Axes[1].NumberFormat = "0%"
    ;
    
     //去掉线
    
     chChart.SeriesCollection[3].Line.Color = ChartColorIndexEnum.chColorNone;
    
     //标记形状
    
     chChart.SeriesCollection[3].Marker.Style = ChartMarkerStyleEnum.chMarkerStyleDiamond;
    
     //系列不良合计
    
    //给定系列的名称
    
    chChart.SeriesCollection[3].SetData(ChartDimensionsEnum.chDimSeriesNames,
      +(int
    )ChartSpecialDataSourcesEnum.chDataLiteral, "不良合计"
    );
    
     //给定分类
    
     chChart.SeriesCollection[3].SetData(ChartDimensionsEnum.chDimCategories,
      +(int
    )ChartSpecialDataSourcesEnum.chDataLiteral, "材料A\t材料B\t材料C\t材料D"
    );
    
     //给定系列的值
    
    
     chChart.SeriesCollection[3].SetData
      (ChartDimensionsEnum.chDimValues,
      (int
    )ChartSpecialDataSourcesEnum.chDataLiteral, "0.02\t0.04\t0.05\t0.07"
    );
     
    
     /*折线图*/
    
     //再增加一个系列
    
    
     ChSeries chSeries = chChart.SeriesCollection.Add(0);
    
     //指定图表类型
    
     chSeries.Type = ChartChartTypeEnum.chChartTypeLineMarkers;
     chSeries.Ungroup(true
    );
     
     ChAxis chAxis = chChart.Axes.Add(chSeries.get_Scalings(ChartDimensionsEnum.chDimValues));
     chAxis.Position = ChartAxisPositionEnum.chAxisPositionRight;
    
      chSeries.Marker.Style = ChartMarkerStyleEnum.chMarkerStyleSquare;
    
     //主次网格线不显示
    
     chAxis.HasMinorGridlines = false
    ;
     chAxis.HasMajorGridlines = false
    ;
    
     chAxis.HasTitle = true
    ;
     chAxis.Title.Caption = "使用数量"
    ;
     //给定系列的名称
    
    
     chSeries.SetData(ChartDimensionsEnum.chDimSeriesNames,
      +(int
    )ChartSpecialDataSourcesEnum.chDataLiteral, "使用数量"
    );
    
     //给定系列的值
    
     chSeries.SetData
      (ChartDimensionsEnum.chDimValues,
      (int
    )ChartSpecialDataSourcesEnum.chDataLiteral, "200\t120\t90\t150"
    );
    
     //输出成GIF文件.
    
    
     string
     strAbsolutePath = (Server.MapPath("."
    )) + "\\Temp\\test.gif"
    ;
     chartSpace.ExportPicture(strAbsolutePath, "GIF"
    , 600, 350);
    
     //创建GIF文件的相对路径.
    
    
     string
     strRelativePath = "./Temp/test.gif"
    ;
     //显示图片
    
     Image1.ImageUrl = strRelativePath.ToString(); 
    
    
    

     

     

     

     

     

    • 已编辑 游戏人间 2010年5月11日 3:31 C#代码空格调整
    2010年5月11日 3:16