VB MSChart 绘制多条曲线时,数组赋值正确,但是曲线却有几条不显示,求教。

cichaqiu4015 2017-08-20 10:25:01
我想要的效果是,人为输入不同的时间段,然后MSChart显示相应时间段内的曲线。一共20条曲线。
但是在调试时发现,显示的曲线数量和Mydata(size,20)中的size一样。这很奇怪,曲线数量不应该是20吗?
我感觉是后面的.ColumnCount = Size有问题,但是发现只有.ColumnCount = Size时才能显示曲线,如果改成.ColumnCount = 20之类的语句或者删除则一条曲线都无法显示。

Dim MyData() As Single
ReDim MyData(Size - 1, 20) As Single '定义了20条曲线
For i = 0 To Size - 1
Sum = 0
For j = 0 To 19
Sum = Sum + Val(Data_Year(MinYear).Data_Month(MinMonth).Month_People(j).Lab)
MyData(i, j) = Sum '为每条曲线赋值
Next j
If MinMonth = 11 Then
MinYear = MinYear + 1
MinMonth = 0
Else
MinMonth = MinMonth + 1
End If
Next i

'波形图外观设置
With MSChart1

.Backdrop.Fill.Brush.FillColor.Set 255, 255, 255
.TitleText = "人员SE图"
' '设置图线的外观

' '设置XY轴
.Plot.Axis(VtChAxisIdX).ValueScale.Auto = False
.Plot.Axis(VtChAxisIdY).ValueScale.Auto = False
'// 设置最大值
'.Plot.Axis(VtChAxisIdX).ValueScale.Maximum = 10000 '设置横轴标注最大值
.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 10 '设置纵轴标注最大值
'// 设置最小值
.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0
.Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0
'//
.Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 20 'X轴主要网格数量
.Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision = 10 'Y轴主要网格数量
.Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 0 'X轴次要网格数量
.Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0 'Y轴次要网格数量
.Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted
.Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDotted
MSChart1.Plot.AutoLayout = False
MSChart1.Plot.UniformAxis = False
MSChart1.chartType = VtChChartType2dLine '设置图形为二维散点图
MSChart1.ChartData = MyData '数据

For i = 1 To 20
.Plot.SeriesCollection(i).LegendText = Data_Year(0).Data_Month(0).Month_People(i - 1).Name
Next i
For i = 1 To 20
.Plot.SeriesCollection(i).Pen.Width = 10
.Plot.SeriesCollection(i).Pen.Style = VtPenStyleSolid
Next i

For i = 1 To 20
.Plot.SeriesCollection(i).DataPoints(-1). _
DataPointLabel.LocationType = VtChLabelLocationTypeBelowPoint
Next i

.ColumnCount = Size ''删除或修改都无法显示曲线
For k = 1 To Size
.Row = k
.RowLabel = Data_Year(kcountyear).date_year & "/" & Data_Year(kcountyear).Data_Month(kcountmonth).date_month
If kcountmonth = 11 Then
kcountyear = kcountyear + 1
kcountmonth = 0
Else
kcountmonth = kcountmonth + 1
End If
Next k
End With
...全文
520 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
脆皮大雪糕 2017-08-23
  • 打赏
  • 举报
回复
其实有可能是MSChart的bug,其实画曲线这件事情自己倒腾一下也不是很难还都能按自己的要求来
赵4老师 2017-08-23
  • 打赏
  • 举报
回复
注释掉所有On Error Resume Next语句,在VB6 IDE中运行, 出错后点击调试,光标会停在出错的那条语句处, 或者 事先在怀疑可能有逻辑错误的语句处设置断点,运行经过断点时中断, 此时可以在立即窗口中使用 ?变量名 或 ?函数名(函数参数) 或 过程名(参数) 辅助调试。
Tiger_Zhao 2017-08-23
  • 打赏
  • 举报
回复
你理解错误。Mydata(size,20) 中 size 是曲线数、20 是每条曲线上的点数目。
ColumnCount、RowCount 建议显式指定(试试在 ChartData 赋值之前/之后)。
cichaqiu4015 2017-08-22
  • 打赏
  • 举报
回复
您好,我今天试了一下在属性页中修改。但是发现属性页只能对绘图的样式修改,但是它里面的序列和ChartData绘制的曲线感觉没有关系。。这个要怎么解。。
赵4老师 2017-08-21
  • 打赏
  • 举报
回复
在控件上双击,进入控件的属性页对话框,设置相关属性。
cichaqiu4015 2017-08-20
  • 打赏
  • 举报
回复
顶。。。不要沉啊,在线等

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧