以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]图表标志线 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=194981) |
-- 作者: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编辑过]
|
-- 作者:有点蓝 -- 发布时间:2025/2/13 13:34:00 -- 参考|:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=55270 |
-- 作者:azlm100 -- 发布时间:2025/2/13 13:54:00 -- 下载的文件打开就提示这个啊 是我电脑问题吗 [此贴子已经被作者于2025/2/13 14:41:22编辑过]
|
-- 作者:有点蓝 -- 发布时间:2025/2/13 15:10:00 -- 应该是吧。我下载可以正常打开。换台电脑安装商业版打开试试 |
-- 作者: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 |
-- 作者:有点蓝 -- 发布时间:2025/2/14 13:52:00 -- 请上传实例测试 |
-- 作者:azlm100 -- 发布时间:2025/2/14 14:16:00 -- 老师我做了一个示例,也是不出辅助线的。 帮忙看下。难道是因为堆积柱状图原因吗 还是说开发版问题? |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2025/2/14 15:17:00 -- 这个第二图系我试过一次。也是这个刻度对不齐问题。第一图系的刻度是可变可增长的。到了月底可能就去到50了。所以我尝试不固定刻度。 但是这个第二图系的位置一直对不齐。 老师发的固定0-40我生成的也对不齐。 |
-- 作者:有点蓝 -- 发布时间:2025/2/14 15:46:00 -- 根据表格里的值,找出最大值和最小值,把2个图表的Y轴都设置一样即可 |