Foxtable(狐表)用户栏目专家坐堂 → 关于图表问题


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

主题:关于图表问题

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
关于图表问题  发帖心情 Post By:2018/7/20 15:31:00 [只看该作者]

老师:
需求:1、X轴的数据为所有数据的1到最大值的整数。2、Y轴为对应值的次数,如没有对应值则为0
下面代码出错:

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim t As Table = Tables("抽签入围台帐_Table2") '定义一个变量t引用数据表
Chart = e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '设置图表类型
'Chart.ChartType = ChartTypeEnum.Histogram ' 设置图表类型
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.AxisX.ClearValueLabel '清除所有通过SetValueLabel设置的数值字符标示

Series = Chart.SeriesList.Add() '增加一个图系
Series.Text = "入围编号趋势图" '图例名称命名
Series.Length = t.Rows.Count '设置图系的长度

Dim cnt As Integer = t.DataTable.Compute("Max(市外_入围编号)")
For ii As Integer = 1 To cnt  '  t.Rows.Count - 1 '指定每个数据点的位置
    Series.X(ii) = ii '指定水平坐标
    For i As Integer = 0 To t.Rows.Count - 1 '指定每个数据点的位置
        Series.Y(i) = t.Rows(i)("市外_次数") '指定垂直坐标
        Chart.AxisX.SetValueLabel(i, Format(t.Rows(i)("市外_入围编号"))) '指定字符表示
    Next
Next

Chart.AxisX.AnnoWithLabels = True '启用字符标示
Chart.LegendVisible = True '显示图列
Chart.LegendCompass = CompassEnum.South '图列显示在南方(底端)
Chart.AxisX.AnnoRotation = - 45 'X轴标示逆时针旋转45度
Dim fnt As New Font("黑体",9) '设置字体
Chart.AxisX.Font = fnt
Series.DataLabelText = "{#YVAL}" & "次" '数据标示
Chart.SeriesList(0).FitType = FitTypeEnum.Spline '采用平滑线条


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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/20 16:45:00 [只看该作者]

代码改成

 

Series = Chart.SeriesList.Add() '增加一个图系
Series.Text = "入围编号趋势图" '图例名称命名
Series.Length = t.Rows.Count '设置图系的长度
For i As Integer = 0 To t.Rows.Count - 1 '指定每个数据点的位置 

    Series.X(i) = i '指定水平坐标
    Series.Y(i) = t.Rows(i)("市外_次数") '指定垂直坐标
    Chart.AxisX.SetValueLabel(i, Format(t.Rows(i)("市外_入围编号"))) '指定字符表示
Next

[此贴子已经被作者于2018/7/20 16:45:07编辑过]

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/7/20 17:03:00 [只看该作者]

老师:
我需要的是:X轴的数据为所有数据的1到最大值的连续整数,如下图:6、7、8、9、10、11、12


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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/20 17:28:00 [只看该作者]

Series = Chart.SeriesList.Add() '增加一个图系
Series.Text = "入围编号趋势图" '图例名称命名
Series.Length = t.Rows.Count+1 '设置图系的长度

Dim cnt As Integer = t.DataTable.Compute("Max(市外_入围编号)")
For ii As Integer = 1 To cnt  '  t.Rows.Count - 1 '指定每个数据点的位置
    Series.X(ii) = ii '指定水平坐标
    Series.Y(ii) = 0
Next
For i As Integer = 0 To t.Rows.Count - 1 '指定每个数据点的位置   
    Series.Y(t.Rows(i)("市外_入围编号")) = t.Rows(i)("市外_次数") '指定垂直坐标
Next

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/7/21 23:22:00 [只看该作者]

老师我的需求如图:
1、X轴的数据为所有数据的1到最大值的连续整数,但AAA图表中没有的数据就不要显示。
2、Y轴的值为0时,X轴不显示0次。

Dim cnt As Integer = t.DataTable.Compute("Max(市外入围_编号)")
Series.Length = cnt '设置图系的长度
t.Sort = "市外入围_编号"
For ii As Integer = 1 To cnt  '  t.Rows.Count - 1 '指定每个数据点的位置
    Series.X(ii) = ii '指定水平坐标
    Series.Y(ii) = 0
'For i As Integer = 0 To t.Rows.Count - 1 '指定每个数据点的位置
    Chart.AxisX.SetValueLabel(ii, Format(t.Rows(ii)("市外入围_编号"))) '指定字符表示
'Next
Next
For i As Integer = 0 To t.Rows.Count - 1 '指定每个数据点的位置   
    Series.Y(t.Rows(i)("市外入围_编号")) = t.Rows(i)("市外入围_次数") '指定垂直坐标
Next


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


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




[此贴子已经被作者于2018/7/21 23:27:17编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/22 17:48:00 [只看该作者]

请上传具体实例测试。

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/7/22 23:19:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:图表20180722.table


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/23 0:31:00 [只看该作者]

'''========市内入围编号趋势图======
Dim Chart1 As WinForm.Chart '定义一个图表变量
Dim Series1 As WinForm.ChartSeries '定义一个图系变量
Dim tbn As Table = Tables("抽签入围台帐_Table1") '定义一个变量t引用数据表
Chart1 = e.Form.Controls("Chart1") ' 引用窗口中的图表
Chart1.ChartType = ChartTypeEnum.Bar '设置图表类型
'Chart.ChartType = ChartTypeEnum.Histogram ' 设置图表类型
Chart1.SeriesList.Clear() '清除图表原来的图系
Chart1.AxisX.ClearValueLabel '清除所有通过SetValueLabel设置的数值字符标示
Series1 = Chart1.SeriesList.Add() '增加一个图系
Series1.Text = "市外入围编号趋势图" '图例名称命名
tbn.Sort = "市外入围_编号"
Dim cnt As Integer = tbn.DataTable.Compute("Max(市外入围_编号)")
Series1.Length = cnt+1
For ii As Integer = 1 To cnt  '  t.Rows.Count - 1 '指定每个数据点的位置
    Series1.X(ii) = ii '指定水平坐标
    Series1.Y(ii) = 0
Next
For i As Integer = 0 To tbn.Rows.Count - 1 '指定每个数据点的位置   
    Series1.Y(tbn.Rows(i)("市外入围_编号")) = tbn.Rows(i)("市外入围_次数") '指定垂直坐标
Next

Dim bChart1 As C1.Win.C1Chart.C1Chart  = Chart1.basecontrol  '图标坐标轴如何设置字体颜色
Dim area1 = bChart1.ChartArea
area1.AxisX.ForeColor = Color.Red
area1.AxisY.ForeColor = Color.Blue  

'Chart1.AxisX.AnnoWithLabels = True '启用字符标示
Chart1.LegendVisible = True '显示图列
Chart1.LegendCompass = CompassEnum.South '图列显示在南方(底端)
Chart1.AxisX.AnnoRotation = - 45 'X轴标示逆时针旋转45度
Dim fnt As New Font("黑体",9) '设置字体
Chart1.AxisX.Font = fnt
Chart1.SeriesList(0).FitType = FitTypeEnum.Spline '采用平滑线条

Dim lbls = bChart1.ChartLabels
For i As Integer = 1 To cnt  '  t.Rows.Count - 1 '指定每个数据点的位置
    Dim lbl As C1.Win.C1Chart.Label = lbls.LabelsCollection.AddNewLabel()
    lbl.Text = iif(series1.y(i) = 0, "", series1.y(i) & "次")
   
    lbl.AttachMethod = C1.Win.C1Chart.AttachMethodEnum.DataIndex
    lbl.AttachMethodData.GroupIndex = 0
    lbl.AttachMethodData.SeriesIndex = 0
    lbl.AttachMethodData.PointIndex = i
    lbl.Style.ForeColor = Color.Red
    lbl.style.font = new font("宋体", 15)
    lbl.Compass = LabelCompassEnum.South
    lbl.Visible = True
Next


 回到顶部