Foxtable(狐表)用户栏目专家坐堂 → [求助]图表标志线


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

主题:[求助]图表标志线

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


加好友 发短信
等级:婴狐 帖子:35 积分:401 威望:0 精华:0 注册:2019/8/7 15:51:00
[求助]图表标志线  发帖心情 Post By:2025/2/13 13:29:00 [只看该作者]

图片点击可在新窗口打开查看
单元格图表有这个标志线代码。想在chart图表中也添加这个标志线,不知道有没有代码可以实现?

图片点击可在新窗口打开查看
使用了堆积柱状图,然后再添加了一个线状图来当标志线。但是线状图的刻度除了问题,无法跟第一图系的对其。有办法可以取消右边刻度然后这个28能采用左边的刻度来显示?


附上代码

Chart = e.Form.Controls("Chart2") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '设置图表类型
Chart.ChartType2 = ChartTypeEnum.XYPlot '图表2类型该为线形
Chart.SeriesList.Clear() '清除图表原来的图系
chart.AxisX.ClearValueLabel
chart.AxisY.ClearValueLabel
Series = Chart.SeriesList.Add() '增加一个图系
Dim b As Integer = b
Series.Length = lst4.Count '图系的数据点数等于表的行数
Series.Text = "平日加班"
For k As Integer = 0 To lst4.Count - 1 '指定每个数据点的位置
    Series.X(k) = k '指定水平坐标
    Dim dttr As DataRow
    'dttr = dtt.Find("cus_xi = '" & lst3(k) & "' and bd >= '" & dt3 & "' And bd <= '" & dt4 & "'")
    dttr = dt.Find("empname = '" & lst4(k) & "' and bd = '" & dt3 & "'") '=====个人平均加班
    If dttr IsNot Nothing Then
        Series.Y(k) = CInt(Format(dttr("平时加班"), "0")) 
    Else
        Series.Y(k) = 0
    End If
    Chart.AxisX.SetValueLabel(k, lst4(k)) '指定字符表示
Next
Series.FillColor = Color.Green
series.MarkShape = MarkShapeEnum.None
Series.TooltipText = "{#YVAL}"
Series.DataLabelText = "{#YVAL}"
series.DataLabelForeColor = Color.blue
Series.DataLabelCompass = LabelCompassEnum.North
Series = Chart.SeriesList.Add() '给图表2增加一个图系
Series.Length = lst4.Count '图系的数据点数等于表的行数
Series.Text = "休出加班"
For ii As Integer = 0 To lst4.Count - 1 '指定每个数据点的位置
    Series.X(ii) = ii '指定水平坐标
    Dim dttr As DataRow
    dttr = dt.Find("empname = '" & lst4(ii) & "' and bd = '" & dt3 & "'") '=====个人平均加班
    If dttr IsNot Nothing Then
        Series.Y(ii) = CInt(Format(dttr("休出加班") , "0"))
    Else
        Series.Y(ii) = 0
    End If
    Chart.AxisX.SetValueLabel(ii, lst4(ii)) '指定字符表示
Next
Series.FillColor = Color.LightBlue
Chart.Stacked = True
Series.TooltipText = "{#YVAL}"
Series.DataLabelText = "{#YVAL}"
Series.DataLabelCompass = LabelCompassEnum.North
Dim mm As Integer = Chart.AxisY.Max
Chart.SeriesList2.Clear() '清除图表原来的图系
Series = Chart.SeriesList2.Add() '给图表2增加一个图系
Series.Length = lst4.Count '图系的数据点数等于表的行数
Series.Text = "加班标志线"
For iii As Integer = 0 To lst4.Count - 1 '指定每个数据点的位置
        Series.X(iii) = iii '指定水平坐标
        Series.Y(iii) = 28
Next

Chart.AxisY.MinorTick = False 'Y轴不显示副刻度
Chart.AxisX.AnnoRotation = - 45
Chart.LegendVisible = True '显示图列
Chart.LegendCompass = CompassEnum.South '图列显示在南方(底端)
Chart.AxisX.AnnoWithLabels = True '启用字符标示


这个28是不固定

[此贴子已经被作者于2025/2/13 13:32:49编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112350 积分:572006 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/2/13 13:34:00 [只看该作者]

参考|:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=55270

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


加好友 发短信
等级:婴狐 帖子:35 积分:401 威望:0 精华:0 注册:2019/8/7 15:51:00
  发帖心情 Post By:2025/2/13 13:54:00 [只看该作者]

图片点击可在新窗口打开查看
下载的文件打开就提示这个啊

是我电脑问题吗

[此贴子已经被作者于2025/2/13 14:41:22编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112350 积分:572006 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/2/13 15:10:00 [只看该作者]

应该是吧。我下载可以正常打开。换台电脑安装商业版打开试试

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


加好友 发短信
等级:婴狐 帖子:35 积分:401 威望:0 精华:0 注册:2019/8/7 15:51:00
  发帖心情 Post By:2025/2/14 13:31:00 [只看该作者]

图片点击可在新窗口打开查看


我按照示例里面修改,怎么不出线的

Chart = e.Form.Controls("Chart2") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '设置图表类型
Chart.ChartType2 = ChartTypeEnum.XYPlot '图表2类型该为线形t
Chart.SeriesList.Clear() '清除图表原来的图系
chart.AxisX.ClearValueLabel
chart.AxisY.ClearValueLabel
Series = Chart.SeriesList.Add() '增加一个图系
Dim b As Integer = b
Series.Length = lst4.Count '图系的数据点数等于表的行数
Series.Text = "平日加班"
For k As Integer = 0 To lst4.Count - 1 '指定每个数据点的位置
    Series.X(k) = k '指定水平坐标
    Dim dttr As DataRow
    dttr = dtt.Find("empname = '" & lst4(k) & "' and bd = '" & dt3 & "'") '=====个人平均加班
    If dttr IsNot Nothing Then
        Series.Y(k) = CInt(Format(dttr("平时加班"), "0")) 
    Else
        Series.Y(k) = 0
    End If
    Chart.AxisX.SetValueLabel(k, lst4(k)) '指定字符表示
Next
Series.FillColor = Color.Green
series.MarkShape = MarkShapeEnum.None
Series.TooltipText = "{#YVAL}"
Series.DataLabelText = "{#YVAL}"
series.DataLabelForeColor = Color.blue
Series.DataLabelCompass = LabelCompassEnum.North
Series = Chart.SeriesList.Add() '给图表2增加一个图系
Series.Length = lst4.Count '图系的数据点数等于表的行数
Series.Text = "休出加班"
For ii As Integer = 0 To lst4.Count - 1 '指定每个数据点的位置
    Series.X(ii) = ii '指定水平坐标
    Dim dttr As DataRow
    dttr = dtt.Find("empname = '" & lst4(ii) & "' and bd = '" & dt3 & "'") '=====个人平均加班
    If dttr IsNot Nothing Then
        Series.Y(ii) = CInt(Format(dttr("休出加班") , "0"))
    Else
        Series.Y(ii) = 0
    End If
    Chart.AxisX.SetValueLabel(ii, lst4(ii)) '指定字符表示
Next
Series.FillColor = Color.LightBlue
Chart.Stacked = True
Series.TooltipText = "{#YVAL}"
Series.DataLabelText = "{#YVAL}"
Series.DataLabelCompass = LabelCompassEnum.North
Chart.AxisY.MinorTick = False 'Y轴不显示副刻度
Chart.AxisX.AnnoRotation = - 45
Chart.LegendVisible = True '显示图列
Chart.LegendCompass = CompassEnum.South '图列显示在南方(底端)
Chart.AxisX.AnnoWithLabels = True '启用字符标示

Dim C1Cha As C1.Win.C1Chart.C1Chart = Chart.BaseControl
C1Cha.ChartGroups(0).ChartData.TrendsList.clear
Dim tl As C1.Win.C1Chart.TrendLine = C1Cha.ChartGroups(0).ChartData.TrendsList.AddNewTrendLine()
tl.LineStyle.Color = Color.red'线条颜色 
tl.LineStyle.Thickness = 2 '线宽 
tl.LineStyle.Pattern = 0 '直线样式 0-5  
Dim zxb = New TbszLine()
zxb.SetXY(New PointF( - 0.5, 28), New PointF(Series.Length, 28))
zxb.SetText("均线")
tl.CustomTrendLine = zxb

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112350 积分:572006 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/2/14 13:52:00 [只看该作者]

请上传实例测试

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


加好友 发短信
等级:婴狐 帖子:35 积分:401 威望:0 精华:0 注册:2019/8/7 15:51:00
  发帖心情 Post By:2025/2/14 14:16:00 [只看该作者]

老师我做了一个示例,也是不出辅助线的。

帮忙看下。难道是因为堆积柱状图原因吗

还是说开发版问题?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:辅助线测试.foxdb



 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112350 积分:572006 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/2/14 14:49:00 [只看该作者]

确实是堆叠的原因,去掉Chart.Stacked = True就可以

只能考虑使用第二个图表做了

Chart.SeriesList2.Clear() '清除图表原来的图系
Series = Chart.SeriesList2.Add() '给图表2增加一个图系
Series.Text = "均线"
Series.Length = t.Rows.Count
chart.AxisY2.ForeColor = Color.White
chart.AxisY2.GridMajorVisible = False
chart.AxisY2.GridMinorVisible = False
chart.AxisY.Max = 40 ‘设置Y轴的最大值,和图1一致
chart.AxisY.Min = 0 '设置Y轴的最小值,和图1一致
Series.LineThickNess = 2
Series.LineColor = Color.Red
Series.MarkSize = 0
For k As Integer = 0 To t.Rows.Count '指定每个数据点的位置
    Series.X(k) = k '
    Series.Y(k) = 28 '指定均线值
Next

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


加好友 发短信
等级:婴狐 帖子:35 积分:401 威望:0 精华:0 注册:2019/8/7 15:51:00
  发帖心情 Post By:2025/2/14 15:17:00 [只看该作者]

图片点击可在新窗口打开查看
这个第二图系我试过一次。也是这个刻度对不齐问题。第一图系的刻度是可变可增长的。到了月底可能就去到50了。所以我尝试不固定刻度。
但是这个第二图系的位置一直对不齐。
老师发的固定0-40我生成的也对不齐。


 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:112350 积分:572006 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/2/14 15:46:00 [只看该作者]

根据表格里的值,找出最大值和最小值,把2个图表的Y轴都设置一样即可

 回到顶部
总数 11 1 2 下一页