Foxtable(狐表)用户栏目专家坐堂 → 如何使用多图表


  共有3534人关注过本帖树形打印复制链接

主题:如何使用多图表

帅哥哟,离线,有人找我吗?
onlinech
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:103 积分:1165 威望:0 精华:0 注册:2017/6/10 10:52:00
如何使用多图表  发帖心情 Post By:2022/12/9 17:13:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:图表-002.png
图片点击可在新窗口打开查看
想实现功能:
1、前3列用柱形图,最后1列“本月”用线型
2、取消图表背景的网格
3、鼠标移到到某个柱或点时,例:显示出“x=1月 y=1021600"

代码如下:
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart = e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Bar '图表1类型该为Bar(条形)
Chart.ChartType2 = ChartTypeEnum.bar '图表2类型该为Bar(条形)
Chart.ChartType3 = ChartTypeEnum.bar '图表3类型该为Bar(条形)
Chart.ChartType4 = ChartTypeEnum.XYPlot '图表4类型该为线形
Chart.DataSource = "统计表1" '设置绑定表
Chart.SeriesList.Clear() '清除图表原来的图系
Series = Chart.SeriesList.Add() '给图表1增加一个图系
For Each c As Col In Tables("统计表1").Cols
    If c.Name = "净重_1" Then
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Text = c.Caption '设置图系的标题
        Series.X.DataField = "时" 'X轴绑定到产品列
        Series.Y.DataField = c.Name '设置Y轴的绑定列
    End If
Next
Chart.SeriesList2.Clear() '清除图表原来的图系
Series = Chart.SeriesList2.Add() '给图表2增加一个图系
For Each c As Col In Tables("统计表1").Cols
    If c.Name = "净重_2" Then
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Text = c.Caption '设置图系的标题
        Series.X.DataField = "时" 'X轴绑定到产品列
        Series.Y.DataField = c.Name '设置Y轴的绑定列
    End If
Next

Chart.SeriesList3.Clear() '清除图表原来的图系
Series = Chart.SeriesList3.Add() '给图表2增加一个图系
For Each c As Col In Tables("统计表1").Cols
    If c.Name = "净重_3" Then
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Text = c.Caption '设置图系的标题
        Series.X.DataField = "时" 'X轴绑定到产品列
        Series.Y.DataField = c.Name '设置Y轴的绑定列
    End If
Next
Chart.SeriesList4.Clear() '清除图表原来的图系
Series = Chart.SeriesList4.Add() '给图表2增加一个图系
For Each c As Col In Tables("统计表1").Cols
    If c.Name = "净重_4" Then
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Text = c.Caption '设置图系的标题
        Series.X.DataField = "时" 'X轴绑定到产品列
        Series.Y.DataField = c.Name '设置Y轴的绑定列
    End If
Next

Chart.LegendVisible = True '显示图列
Chart.LegendCompass = CompassEnum.South '图列显示在南方(底端)
Chart.AxisY.Text = "净重_1"
Chart.AxisY2.Text = "净重_2"
Chart.AxisY3.Text = "净重_3"
Chart.AxisY4.Text = "净重_4"

Chart.AxisX.AnnoWithLabels = True '启用字符标示
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.LegendVisible = True '显示图列
Chart.LegendCompass = CompassEnum.South '图列显示在南方(底端)
Series.DataLabelText = "{#YVAL}"
Series.Length = 12 '新增图系包括10个数据点
Series.TooltipText = "X = {#XVAL}, Y = {#YVAL}"
For i As Integer = 0 To 11 '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = i + Rand.Next(5) '垂直坐标用随机数生成
Next

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/9 17:23:00 [只看该作者]

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Chart = e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Bar '图表1类型该为Bar(条形)
Chart.ChartType2 = ChartTypeEnum.XYPlot '图表4类型该为线形
Chart.DataSource = "统计表1" '设置绑定表
Chart.SeriesList.Clear() '清除图表原来的图系
For Each c As string in {"净重_1","净重_2","净重_3"}
        Series = Chart.SeriesList.Add() '增加一个图系
Series.TooltipText = "X = {#XVAL}, Y = {#YVAL}"
        Series.Text = c 
'设置图系的标题
        Series.X.DataField = 
"时" 'X轴绑定到产品列
        Series.Y.DataField = c 
'设置Y轴的绑定列
Next

Chart.SeriesList2.Clear() '清除图表原来的图系
Series = Chart.SeriesList2.Add() 
'增加一个图系
Series.TooltipText = "X = {#XVAL}, Y = {#YVAL}"
Series.X.DataField = 
"时" 'X轴绑定到月份列
Series.Y.DataField = 
"净重_3" 'Y轴绑定到数量列

 回到顶部
帅哥哟,离线,有人找我吗?
onlinech
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:103 积分:1165 威望:0 精华:0 注册:2017/6/10 10:52:00
  发帖心情 Post By:2022/12/12 8:36:00 [只看该作者]

现在还有几点问题:图表4放在最前面,因为有时会被图表1-3的柱形图遮挡
不显示图后面的刻度
不显示主、副刻度(或仅不显示刻度)
图和图例所在位置的颜色可以修改

图片点击可在新窗口打开查看此主题相关图片如下:搜狗截图20221212083734.png
图片点击可在新窗口打开查看

代码如下:
Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim b, x As String '定义一个字符串变更,用于暂存统计表1的列标题
Chart = e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.ChartType = ChartTypeEnum.Bar '图表1类型为Bar(条形)
Chart.ChartType2 = ChartTypeEnum.XYPlot '图表4类型为线形
Chart.DataSource = "统计表1" '设置绑定表
Chart.HeaderText = "小时重量对比图"
Dim fnt As New Font("宋体", 22, FontStyle.Bold Or FontStyle.Underline)
Chart.HeaderFont = fnt
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.BarClusterWidth = 40 '设置条形图(Bar)所占水平空间的百分比,默认50
'Chart.AxisY.Major = 1000000 '主刻度间隔值为50000
'Chart.AxisY.MajorTick = False '不在坐标轴轴上显示主刻度
For Each c As String In {"净重_1", "净重_2", "净重_3"}
    Series = Chart.SeriesList.Add() '增加一个图系
'    Series.TooltipText = "X = {#XVAL}, Y = {#YVAL}"
    Select Case c
        Case "净重_1"
            b = Tables("统计表1").Cols("净重_1").Caption
        Case "净重_2"
            b = Tables("统计表1").Cols("净重_2").Caption
        Case "净重_3"
            b = Tables("统计表1").Cols("净重_3").Caption
    End Select
    Series.TooltipText = b & "{#XVAL}点, {#YVAL}" 
    Series.Text = b '设置图系的标题
    Series.X.DataField = "时" 'X轴绑定到产品列
    Series.Y.DataField = c '设置Y轴的绑定列
Next

Series.Length = 24 '设置图系的长度
For i As Integer = 0 To 23 '指定每个数据点的位置
    Series.X(i) = i '指定水平坐标
    Series.Y(i) = Tables("统计表1").Rows(i)("净重_1") '指定垂直坐标
    Chart.AxisX.SetValueLabel(i, Tables("统计表1").Rows(i)("时")) '指定字符表示
Next

Chart.SeriesList2.Clear() '清除图表原来的图系
Chart.AxisY.MinorTick = False '不在坐标轴轴上显示副刻度
Series = Chart.SeriesList2.Add() '增加一个图系
Series.TooltipText = "今日{#XVAL}点, {#YVAL}"
Series.Text = "今日" '设置图系的标题
Series.X.DataField = "时" 'X轴绑定到月份列
Series.Y.DataField = "净重_4" 'Y轴绑定到数量列

Chart.LegendVisible = True '显示图列
Chart.LegendCompass = CompassEnum.South '图列显示在南方(底端)
Chart.AxisX.AnnoWithLabels = True '启用字符标示

[此贴子已经被作者于2022/12/12 8:48:07编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/12 8:53:00 [只看该作者]

1、图表4放在最前面 --- 图表4放到第一个图即可

hart.ChartType = ChartTypeEnum.XYPlot '图表1类型该为Bar(条形)
Chart.ChartType2 = ChartTypeEnum.Bar '图表4类型该为线形
Chart.DataSource = "统计表1" '设置绑定表
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.SeriesList2.Clear() '清除图表原来的图系
For Each c As string in {"净重_1","净重_2","净重_3"}
        Series = Chart.SeriesList2.Add() '增加一个图系
Series.TooltipText = "X = {#XVAL}, Y = {#YVAL}"
        Series.Text = c 
'设置图系的标题
        Series.X.DataField = 
"时" 'X轴绑定到产品列
        Series.Y.DataField = c 
'设置Y轴的绑定列
Next

Series = Chart.SeriesList.Add() '增加一个图系
Series.TooltipText = "X = {#XVAL}, Y = {#YVAL}"
Series.X.DataField = 
"时" 'X轴绑定到月份列
Series.Y.DataField = 
"净重_3" 'Y轴绑定到数量列


 回到顶部
帅哥哟,离线,有人找我吗?
onlinech
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:103 积分:1165 威望:0 精华:0 注册:2017/6/10 10:52:00
  发帖心情 Post By:2022/12/12 10:35:00 [只看该作者]

1的问题已解决
2、3的问题,不显示图后面的刻度和网络线,未解决
代码1:
Chart.HeaderFont = fnt
Chart.BarClusterWidth2 = 60 '设置条形图(Bar)所占水平空间的百分比,默认50
Chart.AxisY2.MinorTick = False '不在坐标轴轴上显示副刻度
Chart.AxisY2.GridMinorVisible = False '不显示副刻度的网格线
For Each c As String In {"净重_1", "净重_2", "净重_3"}
    Series = Chart.SeriesList2.Add() '图表1-3条形增加一个图系
'    Series.TooltipText = "X = {#XVAL}, Y = {#YVAL}"
    Select Case c
代码2:
Series = Chart.SeriesList.Add() '图表4线形增加一个图系
Chart.AxisY.MajorTick = False '不在坐标轴轴上显示主刻度
Chart.AxisY.GridMajorVisible = False '不显示主刻度的网格线 
Series.TooltipText = "今日{#XVAL}点, {#YVAL}"

4的问题,未解决,不是线或柱的颜色,是背景色,就是那个白色的区域


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/12 10:48:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
onlinech
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:103 积分:1165 威望:0 精华:0 注册:2017/6/10 10:52:00
  发帖心情 Post By:2022/12/12 11:06:00 [只看该作者]

我已经增加了下面标颜色的代码,但是2、3的问题,还是未解决,是哪里还有问题吗?实在看不出来了

代码1:
Chart.HeaderFont = fnt
Chart.BarClusterWidth2 = 60 '设置条形图(Bar)所占水平空间的百分比,默认50
Chart.AxisY2.MinorTick = False '不在坐标轴轴上显示副刻度
Chart.AxisY2.GridMinorVisible = False '不显示副刻度的网格线
For Each c As String In {"净重_1", "净重_2", "净重_3"}
    Series = Chart.SeriesList2.Add() '图表1-3条形增加一个图系
'    Series.TooltipText = "X = {#XVAL}, Y = {#YVAL}"
    Select Case c
代码2:
Series = Chart.SeriesList.Add() '图表4线形增加一个图系
Chart.AxisY.MajorTick = False '不在坐标轴轴上显示主刻度
Chart.AxisY.GridMajorVisible = False '不显示主刻度的网格线 
Series.TooltipText = "今日{#XVAL}点, {#YVAL}"

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/12 11:10:00 [只看该作者]

看6楼

 回到顶部
帅哥哟,离线,有人找我吗?
onlinech
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:103 积分:1165 威望:0 精华:0 注册:2017/6/10 10:52:00
  发帖心情 Post By:2022/12/12 11:24:00 [只看该作者]

背景问题参考6楼已解决,我说的是我已经在代码中增加了下面的代码,但是主、副刻度与网格线仍然存在,实在看不出问题出在哪儿?
Chart.AxisY2.MinorTick = False '不在坐标轴轴上显示副刻度
Chart.AxisY2.GridMinorVisible = False '不显示副刻度的网格线

Chart.AxisY.MajorTick = False '不在坐标轴轴上显示主刻度
Chart.AxisY.GridMajorVisible = False '不显示主刻度的网格线 


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/12/12 11:30:00 [只看该作者]

Chart.AxisY.MajorTick = False '不在坐标轴轴上显示主刻度
Chart.AxisY.MinorTick = False '不在坐标轴轴上显示主刻度
Chart.AxisY.GridMajorVisible = False '不显示主刻度的网格线 
Chart.AxisY.GridMinorVisible = False '不显示主刻度的网格线

AxisY2同样按上面设置

 回到顶部