求解用VB做折线图

2024-11-05 01:02:33
推荐回答(2个)
回答1:

第一步,输入。这个额不用说了。
第二步,找出最大值和最小值,就可以把纵坐标和数值换算了(或者直接设置坐标系)。
第三步,画出坐标轴。
第四步,画点,拉线。

代码如下:
Const 数据数 = 5

Private Sub Form_Click()
Dim 数据(数据数) As Single, 最大值 As Single, 最小值 As Single
Dim 留边 As Single, 刻度线长度 As Single, 刻度距 As Single
Dim i As Integer, j As Single
Me.AutoRedraw = True
For i = 1 To 数据数
数据(i) = Val(InputBox("请输入第" & i & "个数据"))
Next i

最大值 = 数据(1)
最小值 = 最大值
For i = 2 To 数据数
If 数据(i) > 最大值 Then
最大值 = 数据(i)
ElseIf 数据(i) < 最小值 Then
最小铅基晌值 = 数据(i)
End If
Next i
留边 = (最大值 - 最小值) * 0.1
If 最大值 > 0 And 最小值 > 0 Then
最小值 = 0
ElseIf 最大值 < 0 And 最小值 < 0 Then
最大值 = 0
End If
最大锋模值 = 最大值 + 留边
最小值 = 最小值 - 留边
Me.Scale (-1, 最大值)-(数据数 + 1, 最槐锋小值)

Line (0, 最小值)-(0, 最大值)
刻度线长度 = 数据数 / 50
CurrentX = CurrentX + 刻度线长度
Print "Y"
Line (-1, 0)-(数据数 + 1, 0)
CurrentX = CurrentX - 数据数 / 50
Print "N"
差值 = 最大值 - 最小值
刻度距 = 10 ^ Int(Log(差值 / 3) / Log(10))
For j = 0 To 最大值 Step 刻度距
Line (0, j)-(刻度线长度, j)
Print j
Next j
For j = 0 To 最小值 Step -刻度距
Line (0, j)-(刻度线长度, j)
Print j
Next j
刻度线长度 = 留边 / 2
For i = 1 To 数据数
Line (i, 刻度线长度)-(i, 0)
Print i
Next i

数据标记半径 = 刻度线长度 / 100
For i = 1 To 数据数 - 1
Line (i, 数据(i))-(i + 1, 数据(i + 1)), vbRed
Circle (i, 数据(i)), 数据标记半径, vbRed
Print 数据(i)
Next i
Circle (数据数, 数据(数据数)), 数据标记半径, vbRed
Print 数据(数据数)
End Sub

回答2:

用picture控件的line来画线,把你的五个数转成一个坐标(x,y)然后两点备颤液连洞兆线。连起来就是你要的折仿物线图。picture1.line (x1,y1)-(x2,y2),vbred