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编辑过]