在图表中有柱和曲线,想给图表添加y轴的次轴,x轴数据固定!想实现柱图数据根着y轴显示,曲线根据y轴的次轴显示,该怎么做啊!!次轴已经添加上可是数据跟y轴一样怎么重新给次轴数据阿!!

解决方案 »

  1.   

    找个office里面的帮助文档就行了。
      

  2.   

    你可以用水晶报表啊!
    http://blog.csdn.net/BennyMavis/category/66503.aspx
      

  3.   

    Dim daystr As Date
            Dim stryear As String
            Dim strmonth As String
            Dim strday As String
            daystr = Format(Now, "yyyy /MM/ dd")
            stryear = Year(daystr)
            strmonth = Month(daystr)
            strday = Day(daystr)
            '创建ChartSpace对象来放置图表 
            Dim objCSpace As ChartSpace = New OWC11.ChartSpace        objCSpace.DisplayScreenTips = True        '在ChartSpace对象中添加图表,Add方法返回chart对象
            Dim objchart, zychart As OWC11.ChChart
            objchart = objCSpace.Charts.Add(0)        '指定图表的类型。类型由OWC.ChartChartTypeEnum枚举值得到
            objchart.Type = ChartChartTypeEnum.chChartTypeColumnClustered
            
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeColumnClustered                柱形图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeColumnStacked                  堆积柱形图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeColumnStacked100               百分比堆积柱形图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeSmoothLine                     曲线图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeSmoothLineMarkers              数据点曲线图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeSmoothLineStacked              曲线图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeSmoothLineStacked100           百分比曲线图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeSmoothLineStacked100Markers    百分比数据点曲线图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeSmoothLineStackedMarkers       堆积数据点曲线图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeArea                           面积图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeAreaStacked                    堆积面积图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeAreaStacked100                 百分比堆积面积图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeBarClustered                   簇状条形图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeBarStacked                     堆积条形图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeBarStacked100                  百分比堆积条形图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeLine                           折线图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeLineMarkers                    数据点折线图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeLineStacked                    堆积折线图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeLineStacked100                 百分比堆积折线图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeLineStacked100Markers          百分比堆积数据点折线图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeLineStackedMarkers             堆积数据点折线图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeRadarLine                      雷达图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeRadarLineFilled                填充雷达图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeRadarLineMarkers               数据点雷达图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeRadarSmoothLine                曲线雷达图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeRadarSmoothLineMarkers         数据点曲线雷达图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypePie                            饼图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeDoughnut                       圆环图
            ' objChart.Type = OWC.ChartChartTypeEnum.chChartTypeDoughnutExploded               分离型圆环图 
            'objChart.Type = OWC.ChartChartTypeEnum.chChartTypeColumnClustered                 柱形图               '指定图表是否需要图例
            objchart.HasLegend = True
            '给定标题
            objchart.HasTitle = True
            objchart.Title.Caption = strmonth & "月份国外道具计划实绩推移表"        Label1.Text = stryear & "年" & strmonth & "月" & strday & "日"
            Label1.Font.Bold = True
            objchart.Title.Font.Size = 12
            '给定x,y轴的图示说明"
            objchart.Axes(1).HasTitle = True
            objchart.Axes(1).Title.Caption = "金额/万"
            objchart.Axes(1).Title.Font.Size = 9
            '坐标轴刻度宽度
            ' objchart.Axes(0).TickLabelSpacing = 2
            ' objChart.Axes(0).Title.Position = ChartTitlePositionEnum.chTitlePositionBottom
                     objchart.Axes(0).HasTitle = True
            objchart.Axes(0).Title.Caption = "日期/天"
            objchart.Axes(0).Title.Font.Size = 9
            ''''给y轴添加一个对应的平行轴 
            objchart.Axes.Add(objchart.Axes(1).Scaling)
            objchart.Axes(2).Position = ChartAxisPositionEnum.chAxisPositionRight
            objchart.Axes(2).CrossingAxis = objchart.Axes(0)
            
            
            '*categories 和 values 可以用tab分割的字符串来表示*
            Dim strSeriesName1 As String = "实际"
            Dim strSeriesName2 As String = "实绩推移"
            Dim strSeriesName3 As String = "计划推移"
            Dim strSeriesName4 As String = "计划日平均"
            ''''改变右侧标题的大小
            objchart.Legend.Font.Size = 9
            objchart.Legend.Position = ChartLegendPositionEnum.chLegendPositionAutomatic
            Dim strCategory As String
            Dim i As Integer
            ''''求得系统当月的天数
            Dim monthstr As Integer
            Dim yearstr As Integer
            Dim daycount As Integer
            monthstr = Month(Now)
            yearstr = Year(Now)
            Dim countstr As New System.DateTime
            daycount = countstr.DaysInMonth(yearstr, monthstr)
            ''''求得系统当月的天数 
            Dim m, g As String
            For i = 1 To daycount
                m = i & "s"
                strCategory = strCategory & m
            Next
            strCategory = Replace(strCategory, "s", ControlChars.Tab)        Dim strValue As String
            Dim strLindValue As String
            If rs.State = 1 Then
                rs.Close()
            End If
            strsql = ""
            strsql = strsql & " select mday,isnull((SELECT ROUND(SUM(amntzaisei)/10000, 2) FROM dbo.zyowc where nok2=a.mday GROUP BY NOK2),0) as amnt "
            strsql = strsql & ",isnull((select sum(juq) from dbo.zyowc where nok2=a.mday group by nok2),0) as juq"
            strsql = strsql & " from mdaylist(" & stryear & "," & strmonth & ")a" 
            rs.Open(strsql, conn, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockReadOnly)
            If rs.EOF = False Then
                rs.MoveFirst()
                For i = 1 To rs.RecordCount
                    m = rs.Fields("amnt").Value & "s"
                    strValue = strValue & m
                    g = rs.Fields("juq").Value & "s"
                    strLindValue = strLindValue & g
                    rs.MoveNext()
                Next
                strValue = Replace(strValue, "s", ControlChars.Tab)
                strLindValue = Replace(strLindValue, "s", ControlChars.Tab)
            Else
                Response.Write("没有数据!")
                rs.Close()
                rs = Nothing
                Exit Sub
            End If
      

  4.   

    '添加一个series, 给定series的名字 '给定分类  '给定值  
            objchart.SeriesCollection.Add(0)
            objchart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimSeriesNames, ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName1) 
            objchart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimCategories, ChartSpecialDataSourcesEnum.chDataLiteral, strCategory)  
            objchart.SeriesCollection(0).SetData(ChartDimensionsEnum.chDimValues, ChartSpecialDataSourcesEnum.chDataLiteral, strValue)        objchart.SeriesCollection.Add(1)
            objchart.SeriesCollection(1).SetData(ChartDimensionsEnum.chDimSeriesNames, ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName2) 
            objchart.SeriesCollection(1).SetData(ChartDimensionsEnum.chDimValues, ChartSpecialDataSourcesEnum.chDataLiteral, strLindValue)
            objchart.SeriesCollection.Add(2) 
            objchart.SeriesCollection(2).SetData(ChartDimensionsEnum.chDimSeriesNames, ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName3) 
            objchart.SeriesCollection(2).SetData(ChartDimensionsEnum.chDimValues, ChartSpecialDataSourcesEnum.chDataLiteral, strValue)
     
            ''柱的边框颜色 
            objchart.SeriesCollection(0).Border.Color = "black"
            objchart.SeriesCollection(1).Border.Color = "black"
            objchart.SeriesCollection(2).Border.Color = "black"
            ''柱的底色
            'objchart.SeriesCollection(0).Interior.Color = "red"
            ''柱的底色为渐变 
            objchart.SeriesCollection(0).Interior.SetTwoColorGradient(ChartGradientStyleEnum.chGradientVertical, ChartGradientVariantEnum.chGradientVariantEdges)
            objchart.SeriesCollection(1).Interior.SetTwoColorGradient(ChartGradientStyleEnum.chGradientVertical, ChartGradientVariantEnum.chGradientVariantEdges)
            objchart.SeriesCollection(2).Interior.SetTwoColorGradient(ChartGradientStyleEnum.chGradientVertical, ChartGradientVariantEnum.chGradientVariantEdges)
            objchart.SeriesCollection(0).Interior.Color = "DarkViolet"
            objchart.SeriesCollection(1).Interior.Color = "PaleGreen"
            objchart.SeriesCollection(2).Interior.Color = "SteelBlue"        ''''**********添加曲线 
            'objchart.SeriesCollection.Add(3)
            'objchart.SeriesCollection(3).Type = ChartChartTypeEnum.chChartTypeLine
            'objchart.SeriesCollection(3).SetData(ChartDimensionsEnum.chDimSeriesNames, ChartSpecialDataSourcesEnum.chDataLiteral, strSeriesName4)
            'objchart.SeriesCollection(3).SetData(ChartDimensionsEnum.chDimValues, ChartSpecialDataSourcesEnum.chDataLiteral, strLindValue)
            'objchart.SeriesCollection(3).Line.Color = "Maroon"         '''''线的类型
            'objchart.SeriesCollection(3).Line.DashStyle = ChartLineDashStyleEnum.chLineDash
            '''''线的粗细
            objchart.SeriesCollection(3).Line.Weight = 1.1               ''''*****************************************************************************  
            '输出成GIF文件.
            Dim strAbsolutePath As String = (Server.MapPath(".")) & "\Images\test.gif"
            objCSpace.ExportPicture(strAbsolutePath, "GIF", 800, 600)
            '创建GIF文件的相对路径.
            Dim strRelativePath As String = "Images/test.gif"
            '把图片添加到placeholder.  
            Image1.ImageUrl = strRelativePath
    自己现在效果的代码给贴上,都来帮忙顶啊!!
      

  5.   

    在图表页的前台加以下代码:
    <%@ OutputCache Duration="1" VaryByParam="*" %>
      

  6.   

    然后利用dropdownlist或其他WEB控件(autopostback设置为true,目的为刷新网页),对次轴重新赋值,或重新指定数据源,图表就会自动更新
      

  7.   

    你说的更我说的不是一个问题,我的意思是图表一出来就是这个效果!!柱根据y轴波动,曲线根据y轴的次轴波动,共用x轴!y轴和y轴的次轴数据不一样!!
      

  8.   

    用OWC做统计图总结
    http://ltp.cnblogs.com/archive/2005/12/03/289690.html
      

  9.   

    楼主,算了吧,
    在这里问owc的问题根本就是多余,我放几百分问owc的问题,都没有人能解决,而且,我的都是常识问题,不是特别偏门
    b4一下叫人看office帮助的人,麻烦这些人先自己看看去,一句代码都米有,都不知道看什么!
      

  10.   

    //指定图表系列
    OWC11.ChSeries objSeries1 = objCSpace.Charts[0].SeriesCollection.Add(0);
    OWC11.ChSeries objSeries2 = objCSpace.Charts[0].SeriesCollection.Add(0);//设置图表类型
    objSeries1.Type = ChartChartTypeEnum.chChartTypeColumnClustered;
    objSeries2.Type = ChartChartTypeEnum.chChartTypeLineMarkers;
    ......// 设置次坐标轴,系列2的累积百分比依据次坐标轴填充
    objSeries2.Ungroup(true);
    OWC11.ChAxis seAxes = objChart.Axes.Add(objSeries2.get_Scalings(OWC11.ChartDimensionsEnum.chDimValues));
    seAxes.Position = OWC11.ChartAxisPositionEnum.chAxisPositionRight;
    seAxes.HasMajorGridlines = false;
    seAxes.NumberFormat = "0.00%";
    ......
    objSeries1.SetData(OWC11.ChartDimensionsEnum.chDimSeriesNames, 
    + (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, "Y1");
    objSeries1.SetData(OWC11.ChartDimensionsEnum.chDimCategories, 
    + (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, strCategory);
    objSeries1.SetData(OWC11.ChartDimensionsEnum.chDimValues, 
    + (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, strY);

    objSeries2.SetData(OWC11.ChartDimensionsEnum.chDimSeriesNames, 
    + (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, "Y2");
    objSeries2.SetData(OWC11.ChartDimensionsEnum.chDimCategories, 
    + (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, strCategory);
    objSeries2.SetData(OWC11.ChartDimensionsEnum.chDimValues, 
    + (int)OWC11.ChartSpecialDataSourcesEnum.chDataLiteral, strYB); 太长了,只贴出重要部分.
      

  11.   

    终于有人来解救我了,thanks !!我去试一试!!
      

  12.   

    ok!十分感谢qyxie(qiaoqiao)!!
    祝大家新年愉快!哈哈~~~~~~~~~~~~