以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  图表合并列请教  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92303)

--  作者:ljh29206
--  发布时间:2016/10/31 14:59:00
--  图表合并列请教
Dim fnt As New Font("楷体",8,FontStyle.Underline)
Dim Chart As WinForm.Chart \'定义一个图表变量

Dim Series As WinForm.ChartSeries \'定义一个图系变量
Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.SeriesList.Clear() \'清除图表原来的图系
Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮

Chart.ChartType = ChartTypeEnum.Bar  \'图表显示为柱状图
Chart.AxisX.AnnoWithLabels = True \'启用字符标示
Dim count1 As Integer
If Tables("统计").Cols.Contains("非生产对应") Then
    count1 = Tables("统计").Cols.Count
Else
    count1 =  1
End If

\'=-----------------------------------------------增加第一个系列
For Each dr As Row In Tables("统计").Rows
    Series = Chart.SeriesList.Add() \'增加一个图系
    Series.Length = count1   \'图表的点数
    Series.Text =dr("人员角色") & dr("平日休日")
    Series.MarkColor = Color.Green
    Dim q As Integer = 0
    For Each cl As Col In Tables("统计").Cols
        If cl.IsNumeric  AndAlso cl.name <> "非生产对应" AndAlso cl.name <> "总计"   Then
            Series.X(q) = q
            Chart.AxisX.SetValueLabel(q, cl.Name)
            Chart.AxisX.Font = fnt
            Series.Y(q) = dr(cl.name)
            q = q +1
            
        End If
    Next
    
    Series.TooltipText = dr("人员角色") & dr("平日休日") &  " : {#YVAL} H"
    Series.DataLabelText = "{#YVAL}"
    Series.DataLabelCompass = LabelCompassEnum.South
    
Next
Chart.AxisX.AnnoRotation = -45
\'   chart.Stacked = True  \'允许合并数据     \'如果加入这句 会把 4列 合并在一起,  如何 做到  管理者 合并1列   非管理者合并1列
Chart.LegendVisible = True \'显示图列
Chart.LegendCompass= CompassEnum.South \'图列显示在南方(底端)
MainTable = Tables("统计")
图片点击可在新窗口打开查看此主题相关图片如下:无标题.png
图片点击可在新窗口打开查看


另外还有一个问题 ,用TreeView 去生成 图表

横坐标的 字 不会 消失, 会不断叠加上去 
Chart.SeriesList.Clear() \'清除图表原来的图系, 没横坐标的 文字不起效果

可以试下  即时加入了
Chart.SeriesList.Clear()
 用一个按键生成图表,然后不断按这个键 ,会发现 图表的 横坐标 文字 会不断加深, 其实就是上一次的没有清空导致的.

图片点击可在新窗口打开查看此主题相关图片如下:无标题1.png
图片点击可在新窗口打开查看



[此贴子已经被作者于2016/10/31 15:20:01编辑过]

--  作者:有点蓝
--  发布时间:2016/10/31 15:55:00
--  
合并列那个没有办法

生成图表前调用一下ClearValueLabel

Chart = e.Form.Controls("Chart1") \' 引用窗口中的图表
Chart.SeriesList.Clear() \'清除图表原来的图系
Chart.AxisX.ClearValueLabel
Chart.AxisY.ClearValueLabel