[リストへもどる]
一括表示

投稿時間:2003/09/12(Fri) 14:34
投稿者名:ちゅら
Eメール:
URL :
タイトル:
散布図について
intFileNo = FreeFile
  'シーケンシャル入力モードで seiseki.csv をオープン
  Open "seiseki.csv" For Input As #intFileNo
  intDatN = -1  ' 0 を初期値にするために
  'EOF(intFileNo)が True になるまで実行
  Do Until EOF(intFileNo)
    intDatN = intDatN + 1   '件数をカウント
    'データを各変数に読込
    Input #intFileNo, CsvD(0), CsvD(1), CsvD(2), CsvD(3), CsvD(4), _
         CsvD(5), CsvD(6), CsvD(7), CsvD(8), CsvD(9), CsvD(10)
    If intDatN = 0 Then  '項目の部分
      For j = 1 To 10
        sName(j) = CsvD(j)
      Next j
    Else
      Kamoku(intDatN) = CsvD(0) '科目名
      For j = 1 To 10
        intDat(j, intDatN) = CInt(CsvD(j)) '点数
      Next j
    End If
  Loop
  'ファイルを閉じる
  Close #intFileNo
  'CSVファイルから読み込んだデータをグラフのデータにセット
  With MSChart1
    'デフォルトのグラフタイプ(2D棒)
    .chartType = VtChChartType2dBar
    '列数を3列に設定(国語・数学・英語)
    '図表と関連する現在のデータ グリッド内の列数を設定します
    .ColumnCount = 3
    'CSV ファイルの行と列とは逆になるので注意
    '行数を10行に設定(生徒毎)
    .RowCount = 10
    For i = 1 To .RowCount  '行
      For j = 1 To .ColumnCount '列
        .Column = j
        .Row = i
        '配列からデーターを読込
        .Data = intDat(i, j) 'intDat(行,列)
      Next j
    Next i
    'ラベル及び列テキストをセット
    For i = 1 To 10
      '図表と関連する現在のデータ グリッド内の特定の行ラベルを設定
      .DataGrid.RowLabel(i, 1) = sName(i)  '生徒名の読み込み
    Next i
    For i = 1 To 3
      '図表に関連するグリッド内のデータ列のラベルを設定
      .DataGrid.ColumnLabel(i, 1) = Kamoku(i) '科目名
      '図の凡例中の系列を識別する文字列を設定
      .Plot.SeriesCollection(i).LegendText = Kamoku(i) '凡例
    Next i
  End With
End Sub


上は、当サイトの散布図を表示の一部分をコピーしたものなんですが、ここではEXCELから文字を含んだファイルを呼び出して散布図に表示していますが、数値のみのファイルを散布図にするにはどうすればいいんでしょうか?(科目や生徒名などがあって混乱しています)お時間ありましたらレスお願いします。

投稿時間:2003/09/12(Fri) 14:52
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 散布図について
>ここではEXCELから文字を含んだファイルを呼び出して散布図に表示していますが、
EXCELのデータ又はファイルは使っておりません。

>数値のみのファイルを散布図にするにはどうすればいいんでしょうか?
数値のみのファイルです。文字は表示しておりません。

>(科目や生徒名などがあって混乱しています)お時間ありましたらレスお願いします。
使用したデータは棒グラフや折れ線グラフを表示したデータを使って解り易く説明
する為に科目や生徒名で表しております。従ってX,Yにでも何にでも好きな項目名に
置き換えて下さい。
MSChartコントロールを使ってグラフを表示する(その1)をご覧になれば解ります。

投稿時間:2003/09/12(Fri) 14:56
投稿者名:ちゅら
Eメール:
URL :
タイトル:
Re^2: 散布図について
ありがとうございます。もう一度チャレンジしてみます。

投稿時間:2003/09/12(Fri) 16:01
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: これではどうですか?
下記ならどうですか?

Private Sub sDataOpen()
'CSVファイルから2行10列のデータを読込み
    Dim CsvD(10) As String, j          As Long
    Dim intDatN  As Integer, intFileNo As Integer
    intFileNo = FreeFile
    Open "seiseki.csv" For Input As #intFileNo
    intDatN = -1
    With MSChart1
        .chartType = VtChChartType2dBar
        .ColumnCount = 2
        .RowCount = 10
        Do Until EOF(intFileNo)
            intDatN = intDatN + 1
            Input #intFileNo, CsvD(0), CsvD(1), CsvD(2), CsvD(3), CsvD(4), _
                 CsvD(5), CsvD(6), CsvD(7), CsvD(8), CsvD(9)
            .Column = intDatN + 1
            For j = 0 To 9
                .Row = j + 1
                .Data = CInt(CsvD(j))
            Next j
        Loop
        Close #intFileNo
     End With
End Sub

投稿時間:2003/09/12(Fri) 16:34
投稿者名:ちゅら
Eメール:
URL :
タイトル:
Re^4: これではどうですか?
ありがとうございます。
実行するとコマンドボタンが消えてしまうのですが、どうすれば解決するでしょうか??

Option Explicit
Private intChartType As Integer         'グラフの種類
Private intDat(10, 2) As Long           '数値


Private Sub sChartViewSet()
    Dim series As Object

    If intChartType = 1 Then
    '散布図(プロット)
         With MSChart1
             'グラフタイプを散布図に設定
             .Plot.UniformAxis = False  'グラフを横長に
             .chartType = VtChChartType2dXY
        End With

        'すべての系列についてマーカーを表示し、線を表示解除します。
        For Each series In _
            MSChart1.Plot.SeriesCollection
            series.SeriesMarker.Show = True
            series.ShowLine = False
        Next
    Else
    '散布図(ライン)
         With MSChart1
             'グラフタイプを散布図に設定
             .chartType = VtChChartType2dXY
             .Plot.UniformAxis = False  'グラフを横長に
        End With
        'すべての系列についてマーカーを非表示し、線を表示します。
        For Each series In MSChart1.Plot.SeriesCollection
            series.SeriesMarker.Show = False
            series.ShowLine = True
        Next
    End If
End Sub
Private Sub Command1_Click()
'ライン表示のメニュ
    intChartType = 0
    Call sChartViewSet
End Sub
Private Sub Command2_Click()
'プロット表示のメニュ
    intChartType = 1
    Call sChartViewSet
End Sub
Private Sub sDataOpen()
'CSVファイルから2行10列のデータを読込み
    Dim CsvD(10) As String, j          As Long
    Dim intDatN  As Integer, intFileNo As Integer
    intFileNo = FreeFile
    Open "C:\Documents and Settings\admin\デスクトップ\omosako\Book2.csv" For Input As #intFileNo
    intDatN = -1
    With MSChart1
        .chartType = VtChChartType2dBar
        .ColumnCount = 2
        .RowCount = 10
        Do Until EOF(intFileNo)
            intDatN = intDatN + 1
            Input #intFileNo, CsvD(0), CsvD(1), CsvD(2), CsvD(3), CsvD(4), _
                 CsvD(5), CsvD(6), CsvD(7), CsvD(8), CsvD(9)
            .Column = intDatN + 1
            For j = 0 To 9
                .Row = j + 1
                .Data = CInt(CsvD(j))
            Next j
        Loop
        Close #intFileNo
     End With
End Sub

Private Sub Form_Load()
Form1.Move 0, 0, 10400, 7000
    MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
    Call sDataOpen
    intChartType = 1
    Call sChartViewSet
End Sub

Private Sub Form_Resize()
    MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
End Sub

投稿時間:2003/09/12(Fri) 18:29
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: これではどうですか?
> 実行するとコマンドボタンが消えてしまうのですが、どうすれば解決するでしょうか??

下記のMSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeightの部分がどのような
動作をするか調べて下さい。

> Private Sub Form_Load()
> Form1.Move 0, 0, 10400, 7000
>     MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
>     Call sDataOpen
>     intChartType = 1
>     Call sChartViewSet
> End Sub

> Private Sub Form_Resize()
>     MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
> End Sub