Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共11 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

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

1楼
azlm100 发表于: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楼
有点蓝 发表于:2025/2/13 13:34:00
参考|:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=55270
3楼
azlm100 发表于:2025/2/13 13:54:00
图片点击可在新窗口打开查看
下载的文件打开就提示这个啊

是我电脑问题吗

[此贴子已经被作者于2025/2/13 14:41:22编辑过]
4楼
有点蓝 发表于:2025/2/13 15:10:00
应该是吧。我下载可以正常打开。换台电脑安装商业版打开试试
5楼
azlm100 发表于: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楼
有点蓝 发表于:2025/2/14 13:52:00
请上传实例测试
7楼
azlm100 发表于:2025/2/14 14:16:00
老师我做了一个示例,也是不出辅助线的。

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

还是说开发版问题?

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


8楼
有点蓝 发表于: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
9楼
azlm100 发表于:2025/2/14 15:17:00
图片点击可在新窗口打开查看
这个第二图系我试过一次。也是这个刻度对不齐问题。第一图系的刻度是可变可增长的。到了月底可能就去到50了。所以我尝试不固定刻度。
但是这个第二图系的位置一直对不齐。
老师发的固定0-40我生成的也对不齐。

10楼
有点蓝 发表于:2025/2/14 15:46:00
根据表格里的值,找出最大值和最小值,把2个图表的Y轴都设置一样即可
共11 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .07031 s, 3 queries.