⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ÷

📁 所有数理统计知识的源代码都在此,是一本数理统计数的配套光盘.里面有各种分布类型及参数估计插值
💻
📖 第 1 页 / 共 2 页
字号:
        dblDatMax(intI) = -100000
        For intJ = 1 To intCol
            If dblData(intI, intJ) < dblDatMin(intI) Then _
                dblDatMin(intI) = dblData(intI, intJ)
            If dblData(intI, intJ) > dblDatMax(intI) Then _
                dblDatMax(intI) = dblData(intI, intJ)
        Next intJ
        If dblDatMax(intI) - dblDatMin(intI) <= 0.0001 Then
            MsgBox "数据的极大值和极小值太接近,请检查数据或另编程序"
            Unload Me
            End
        End If
    Next intI
'变换数据值为坐标值
    For intI = 1 To intRow
        dblMaxMin = dblDatMax(intI) - dblDatMin(intI)
        sngYInc = sngCH / dblMaxMin
        For intJ = 1 To intCol
            sngData(intI, intJ) = sngCH - sngYInc * _
                (dblData(intI, intJ) - dblDatMin(intI))
        Next intJ
   Next intI
   intS = 1                             '写刻度标识
End Sub

'改变图形为原大的一半
Private Sub cmdLittle_Click()
    intS1 = 34: intS2 = 24
    Me.Scale (0, 0)-(intS1, intS2)      '窗体的自定义坐标系
'为了给曲线腾出位置,将所有命令按钮下移
    cmdDraw.Top = 20
    cmdPrint.Top = 20
    cmdExit.Top = 20
    cmdLittle.Top = 20
    lblTitle.Top = 20
    cmdDraw.Visible = True
    intS = 0                            '不写刻度标识
    Me.Cls
End Sub

'可以拖动图题
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
    Source.Move X, Y
End Sub

'窗体作图
Private Sub cmdDraw_Click()
    On Error Resume Next
'绘曲线
    For intI = 1 To intRow
        Me.CurrentX = 0.1
        Me.CurrentY = (intI - 1) * (sngCH + 0.5) + sngCH / 2 + 1.1
        Me.Print strRowLabel(intI)                         '写行标
'PSet绘起始点,起始点的X坐标是 1.5
        Me.PSet (1.5, sngData(intI, 1) + (intI - 1) * (sngCH + 0.5) + 1.5)
        For intJ = 2 To intCol                          '绘曲线
            Me.Line -(1.5 + sngXInc * (intJ - 1), _
                sngData(intI, intJ) + (intI - 1) * (sngCH + 0.5) + 1.5)
        Next intJ
    Next intI
'绘横坐标轴
    If intRow > 9 Then GoTo PP                         '超过9条曲线不绘X、Y轴
    For intI = 1 To intRow
'PSet绘起始点,起始点的X坐标是 1.5
        Me.PSet (1.5, intI * (sngCH + 0.5) + 1)
        For intJ = 2 To intCol
'绘曲线
            Me.Line -(1.5 + sngXInc * (intJ - 1), intI * (sngCH + 0.5) + 1)
'绘刻度线
            Me.Line -(1.5 + sngXInc * (intJ - 1), intI * (sngCH + 0.5) + 1.1)
            Me.Line -(1.5 + sngXInc * (intJ - 1), intI * (sngCH + 0.5) + 1)
        Next intJ
    Next intI
'在横坐标轴刻度上写列标
    For intI = 1 To intRow
        If intCol <= 40 Then
            For intJ = 1 To intCol
                Me.CurrentX = 1.5 + sngXInc * (intJ - 1)
                Me.CurrentY = intI * (sngCH + 0.5) + 1.1
                Me.Print strColLabel(intJ)
            Next intJ
        End If
    Next intI
'绘纵坐标轴
    For intI = 1 To intRow
        Me.PSet (1.5, intI * (sngCH + 0.5) + 1)
        Me.Line -(1.5, intI * (sngCH + 0.5) + 1 - sngCH)
    Next intI
'在纵坐标轴上画刻度线及写刻度值
'sngCH是曲线的高度
    For intI = 1 To intRow
        dblMaxMin = dblDatMax(intI) - dblDatMin(intI)
        For intJ = 1 To 4
'sngYScale为刻度的位置
            sngYScale(intJ) = intI * (sngCH + 0.5) + 1 - sngCH / 4 * intJ
'intYScale为取整后的刻度值
            intYScale(intJ) = dblDatMin(intI) + dblMaxMin / 4 * intJ
        Next intJ
'在纵坐标轴上画刻度线及写刻度值
        For intJ = 1 To 4
            Me.PSet (1.5, sngYScale(intJ))
            Me.Line -(1.4, sngYScale(intJ))
'只有极差是4的整数倍才都写刻度值,这样作是为了确保刻度是整数
            If intS = 0 Then GoTo SS       '“1/2”的情况下,不再写纵轴刻度
            If (dblMaxMin \ 4) * 4 = dblMaxMin Then
                Me.CurrentX = 0.8
                Me.CurrentY = sngYScale(intJ) - 0.1
                Me.Print intYScale(intJ)
'如果极差是2的整数倍,只写第2条和第4条刻度的刻度值
            ElseIf (intJ = 2 Or intJ = 4) And _
                    (dblMaxMin \ 2) * 2 = dblMaxMin Then
                Me.CurrentX = 0.8
                Me.CurrentY = sngYScale(intJ) - 0.1
                Me.Print intYScale(intJ)
            End If
SS:
        Next intJ
    Next intI
PP:
    cmdPrint.Visible = True
End Sub

'打印机作图
Private Sub cmdPrint_Click()
'绘曲线
    Dim DY As Single
    On Error Resume Next
    Printer.Scale (0, 0)-(intS1, intS2) '打印机的自定义坐标系
    DY = 1                              '如果曲线位置不好,可以修改源程序,调整DY值
    For intI = 1 To intRow
        Printer.CurrentX = 0.1
        Printer.CurrentY = (intI - 1) * (sngCH + 0.5) + sngCH / 2 + 1.1 - DY
        Printer.Print strRowLabel(intI)                 '写行标(某条曲线名称)
'PSet绘起始点,起始点的X坐标是 1.5
        Printer.PSet (1.5, sngData(intI, 1) + (intI - 1) * (sngCH + 0.5) + 1.5 - DY)
        For intJ = 2 To intCol                          '绘曲线
            Printer.Line -(1.5 + sngXInc * (intJ - 1), _
                sngData(intI, intJ) + (intI - 1) * (sngCH + 0.5) + 1.5 - DY)
        Next intJ
    Next intI
'绘横坐标轴
    If intRow > 9 Then GoTo PP             '超过9条曲线不绘X、Y轴
    For intI = 1 To intRow
'PSet绘起始点,起始点的X坐标是 1.5
        Printer.PSet (1.5, intI * (sngCH + 0.5) + 1 - DY)
        For intJ = 2 To intCol
'绘曲线
            Printer.Line -(1.5 + sngXInc * (intJ - 1), intI * (sngCH + 0.5) + 1 - DY)
'绘刻度线
            Printer.Line -(1.5 + sngXInc * (intJ - 1), intI * (sngCH + 0.5) + 1.1 - DY)
            Printer.Line -(1.5 + sngXInc * (intJ - 1), intI * (sngCH + 0.5) + 1 - DY)
        Next intJ
    Next intI
'在横坐标轴刻度上写列标
    For intI = 1 To intRow
        If intCol <= 40 Then
            For intJ = 1 To intCol
                Printer.CurrentX = 1.5 + sngXInc * (intJ - 1)
                Printer.CurrentY = intI * (sngCH + 0.5) + 1.1 - DY
                Printer.Print strColLabel(intJ)
            Next intJ
        End If
    Next intI
'绘纵坐标轴
    For intI = 1 To intRow
        Printer.PSet (1.5, intI * (sngCH + 0.5) + 1 - DY)
        Printer.Line -(1.5, intI * (sngCH + 0.5) + 1 - sngCH - DY)
    Next intI
'在纵坐标轴上画刻度线及写刻度值
'sngCH是曲线的高度
    For intI = 1 To intRow
        dblMaxMin = dblDatMax(intI) - dblDatMin(intI)
        For intJ = 1 To 4
'sngYScale为刻度的位置
            sngYScale(intJ) = intI * (sngCH + 0.5) + 1 - sngCH / 4 * intJ
'intYScale为取整后的刻度值
            intYScale(intJ) = dblDatMin(intI) + dblMaxMin / 4 * intJ
        Next intJ
'在纵坐标轴上画刻度线及写刻度值
        For intJ = 1 To 4
            Printer.PSet (1.5, sngYScale(intJ) - DY)
            Printer.Line -(1.4, sngYScale(intJ) - DY)
'只有极差是4的整数倍才都写刻度值,这样作是为了确保刻度是整数
            If intS = 0 Then GoTo SS            '缩小图形时不写纵轴刻度
            If (dblMaxMin \ 4) * 4 = dblMaxMin Then
                Printer.CurrentX = 0.8
                Printer.CurrentY = sngYScale(intJ) - DY - 0.1
                Printer.Print intYScale(intJ)
'如果极差是2的整数倍,只写第2条和第4条刻度的刻度值
            ElseIf (intJ = 2 Or intJ = 4) And _
                    (dblMaxMin \ 2) * 2 = dblMaxMin Then
                Printer.CurrentX = 0.8
                Printer.CurrentY = sngYScale(intJ) - DY - 0.1
                Printer.Print intYScale(intJ)
            End If
SS:
        Next intJ
    Next intI
PP:
    Printer.EndDoc
End Sub

'退出
Private Sub cmdExit_Click()
    Unload Me
    frmFileName.Visible = True
End Sub


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -