tagCANDY CGI VBレスキュー(花ちゃん) - MSChart コントロール ワンポイントテクニック集(VB6.0) - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
MSChart コントロール ワンポイントテクニック集(VB6.0)
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

MSChart コントロール ワンポイントテクニック集(VB6.0) [No.118の個別表示]
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
日時: 2013/07/23 07:20
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:グラフ,,,,,                                                         *
***********************************************************************************

-----------------------------------------------------------------------------------
投稿者:花ちゃん MSChart コントロール ワンポイントテクニック集  2007/07/23
-----------------------------------------------------------------------------------
最近になってどこか変更されたのか? 一部サンプルプログラムでエラーが発生するように
なりました。(凡例の部分のコード等)
Backdrop プロパティの仕様が変更されたようです。
MSChart1.Backdrop のような場合は、問題ないのですが、.Legend.Backdrop.Frame のような
直下でない場合は、エラーが発生します。
従って当サンプルでもエラーが発生する場合は、Backdrop プロパティを使用しないようにして下さい。

結構今でも質問が多いので、こちらの方にまとめる事しました。

>>1  グラフの種類を変更する
>>2  凡例の表示・非表示設定
>>3  マーカーの表示例
>>4  MSChartで軸目盛り線の設定(X軸・Y軸・第2Y軸)
>>5  MSChartでY軸(数値軸)の目盛り線の設定
>>6  X 軸のラベルの間隔、補助メモリ等の設定
>>7  第2Y軸の目盛り区分線を設定
>>8  グラフタイトルの設定
>>9  Y軸のタイトルの設定
>>10 X軸のタイトル及び脚注の設定
>>11 データポイントラベルの設定
>>12 X軸の目盛り区分線を設定(折れ線の時のみ可)
>>13 縦棒と折線の複合グラフを表示
>>14 棒グラフの棒の色を設定
>>15 棒グラフの棒の内部色を設定
>>16 X 軸のラベルテキストの表示設定
>>17 グラフデータの表示単位を変更する方法
>>18 グラフの表示を印刷用にモノクロ(白黒)で表示
>>19 グラフ内のクリックした位置のデータを取得表示する
>>20 MSChart コントロール 関係のサポート技術情
>>21 折れ線グラフで値が 0 の時に線を描画しないように設定
>>22 ADOを使ってCSVファイルをMSChartコントロールにセットする
>>23 クリックした系列のグラフの色を任意の色に変更する
>>24 グラフの背景を設定
>>25 3D棒グラフを回転角、上昇角を指定して回転表示(チラツキ対策済み)
>>26 系列を排除及び系列を非表示及び統計線を色々表示
>>27 MSChartコントロールで作成したグラフをPictureBoxに転送表示する(こんな事も出来ます)
>>28 ADOを使ってExcelファイルをMSChartコントロールにセットする
>>29 データの行と列を入れ替えてグラフを表示する
>>30 MSChartコントロールのオブジェクト、プロパティ、メソッド、イベント一覧表
>>31 当サイト内で掲載しているMSChart コントロールのサンプル集
>>32 MSChartコントロールで横棒グラフ・吊下げ棒グラフを作成する
>>33 MSChartコントロールの色々なグラフの表示位置(座標)を取得する
     (グラフ上のマウス位置のデータをToolTipTextで表示)
>>34 複合グラフで折れ線を最前面に表示する
>>35

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    MSChart コントロール に関する事で質問される場合の注意事項

MSChart コントロール に関する質問の大半は、データ個々に対する設定に関する事です。
しかしながら、VB6.0に付属の MSChart コントロールでは、データ個々に対する設定が
できません。

本来なら、DataPoints コレクションに系列内の個々のデータが格納されているのだから
DataPoints(3) とかにすれば個別に識別できそうだが、MSDN で DataPoints コレクション
を調べると下記のように書かれている。

object.DataPoints.(index)

index      現在の系列内の特定のデータ ポイントを識別します。
           グラフのこのバージョンについては、この引数の唯一の有効値は -1 です。
           これにより、系列のすべてのデータ ポイントに対する既定の設定に変更を
           加えることができます。
           系列内の各データ ポイントに対しては、設定を変更することはできません。

従って、系列内の各データポイントに対する設定を変更(識別)したいと言った関係の質問を
されても出来ません。
必要なら、製品版や他の市販のコントロール又はExcelの機能を利用するか、ご自分でグラフ
を作成する事になります。
Microsoft チャート コントロールは、MS と名前がついてはいますが、米国Visual Components社
の 製品版を元に作られた、お試し版のようなもので、制限事項やバグ?も多く一般的な事以外は
できません。別途、製品版をお使いになるか、ある程度の前提条件付で擬似的に目的を達成する
しかありません。

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★


まず、基本的な表示画面の設定です。
以後のサンプルは、この表示画面から変更したコードのみの投稿になります。

1.プロジェクト→コンポーネント→Microsoft Chart Control 6.0 にチェックを入れておいて下さい。
2.ツールボックスに表示された、MSChart コントロールをフォームに貼り付けて下さい。
3.下記のコードをフォームにペーストして実行して見て下さい。
 (コードを貼り付ける以外プロパティ等の設定は一切不要です。)

ChartData プロパティ にデータを設定するだけでグラフが表示できます。
ChartData プロパティ については、ヘルプに使用例も掲載されているので見ておいて下さい。

基本コード部分
-------------------------------------------------------------------------------
Option Explicit

Private Sub Form_Load()
   'フォームのサイズを設定(好みで変更してください)
   Form1.Move 0, 0, 10400, 7000
   'MSChart コントロールの表示サイズを設定
   MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   Call sDataOpen       'データの読み込み
   Call sChartViewSet   'グラフの表示設定
End Sub

Private Sub sChartViewSet()
'グラフの表示設定
'------------------- グラフの種類を設定 ----------------------
   '設定しなければ、VtChChartType2dBar となる
   MSChart1.chartType = VtChChartType2dBar       'デフォルトのグラフタイプ(2D棒)
'グラフの種類は下記より選択
'                  VtChChartType3dBar           '3 次元バー
'                  VtChChartType2dBar           '2 次元バー
'                  VtChChartType3dLine          '3 次元線
'                  VtChChartType2dLine          '2 次元線
'                  VtChChartType3dArea          '3 次元面
'                  VtChChartType2dArea          '2 次元面
'                  VtChChartType3dStep          '3 次元階段
'                  VtChChartType2dStep          '2 次元階段
'                  VtChChartType3dCombination   '3 次元組み合わせ
'                  VtChChartType2dCombination   '2 次元組み合わせ
'                  VtChChartType2dPie           '2 次元パイ
'                  VtChChartType2dXY            '2 次元 XY
'---------------------------------------------------------------
End Sub


Private Sub sDataOpen()
'グラフ用のデータを作成及び読み込み
   Dim Dat(0 To 5, 0 To 3) As Variant
   Dat(0, 1) = "国語"
   Dat(0, 2) = "数学"
   Dat(0, 3) = "英語"
  
   Dat(1, 0) = "浅野"
   Dat(1, 1) = 69       '国語の点数
   Dat(1, 2) = 81       '数学の点数
   Dat(1, 3) = 73       '英語の点数
  
   Dat(2, 0) = "安室"
   Dat(2, 1) = 87
   Dat(2, 2) = 80
   Dat(2, 3) = 72
  
   Dat(3, 0) = "加藤"
   Dat(3, 1) = 74
   Dat(3, 2) = 82
   Dat(3, 3) = 96
  
   Dat(4, 0) = "斉藤"
   Dat(4, 1) = 71
   Dat(4, 2) = 69
   Dat(4, 3) = 81
  
   Dat(5, 0) = "鈴木"
   Dat(5, 1) = 84
   Dat(5, 2) = 86
   Dat(5, 3) = 75
  
   'グラフに表示する配列データを設定する
   MSChart1.ChartData = Dat()
End Sub

Private Sub Form_Resize()
   'フォームのサイズ変更に合わせて MSChart コントロールの表示サイズも変更する
   MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
End Sub

--------------------------------------------------------------------------------
(画像をクリックすると元のサイズで見られます。)

上記の設定画面                 こんな事もできます
メンテ

Page: 1 |

グラフの種類を変更する(VB6.0)  (No.1の個別表示) [スレッド一覧へ]
日時: 2007/07/25 00:47
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:MSChart コントロール で表示できるグラフの種類                       *
***********************************************************************************
よく、**グラフの表示の仕方を教えて下さいと言った質問がありますが、下記の定数のグラフ以外は表示できません。(応用したものは除く)

従って、定数に無いようなグラフは他のコントロールを使用するか、ご自分でグラフを作成して下さい。

又、グラフの表示時に系列内の個別のデータを識別する術がありません、従って系列内の個別のデータに関する設定は殆どできません。

従って、スタイルやカラーの設定等の変更は、全て、系列単位となります、まず、Excelのグラフでも出来ないような事は、MSChart では出来ないと思って下さい。(質問してもまず回答はありません)

グラフの設定でよく見かける一般的な設定以外の事をやりたければ、ご自分でグラフを作成して下さい。(やりたい事をうまく説明も出来ないような事はできません(質問してもレスがつきません)と言う事です。)

私もグラフはいくつか作っていますがそう高度な事はしておりません、表示位置の計算がほとんどです。
 http://hanatyan.sakura.ne.jp/samplepic/vb6_347.htm
 http://hanatyan.sakura.ne.jp/samplepic/vb6_348.htm
 http://hanatyan.sakura.ne.jp/vbhlp/gra_en.htm

-----------------------------------------------------------------------------------
投稿者:花ちゃん  MSChart コントロール でグラフの種類を変更する 2007/07/23
-----------------------------------------------------------------------------------

>>0 のコードに下記を追加・変更して下さい。

★ 今後のサンプルは、下記同様 sChartViewSet() プロシージャ内に追加する形になります。


Private Sub Form_Load()
   'フォームのサイズを設定(好みで変更してください)
   Form1.Move 0, 0, 10400, 7000
   'MSChart コントロールの表示サイズを設定
   MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   Call sDataOpen       'データの読み込み
   Call sChartViewSet   'グラフの表示設定  '★ ---- この一行を追加
End Sub


'★ ---- 下記の部分全てを追加して下さい。

Private Sub sChartViewSet()
'グラフの表示設定
'------------------- グラフの種類を設定 ----------------------
   With MSChart1
      '設定しなければ、VtChChartType2dBar となる
      .chartType = VtChChartType2dBar     'デフォルトのグラフタイプ(2D棒)
   End With
'---------------------------------------------------------------
End Sub

'グラフの種類は下記より選択
'                  VtChChartType3dBar           '3 次元バー
'                  VtChChartType2dBar           '2 次元バー
'                  VtChChartType3dLine          '3 次元線
'                  VtChChartType2dLine          '2 次元線
'                  VtChChartType3dArea          '3 次元面
'                  VtChChartType2dArea          '2 次元面
'                  VtChChartType3dStep          '3 次元階段
'                  VtChChartType2dStep          '2 次元階段
'                  VtChChartType3dCombination   '3 次元組み合わせ
'                  VtChChartType2dCombination   '2 次元組み合わせ
'                  VtChChartType2dPie           '2 次元パイ
'                  VtChChartType2dXY            '2 次元 XY
メンテ
凡例の表示・非表示設定(VB6.0)  (No.2の個別表示) [スレッド一覧へ]
日時: 2007/07/28 10:21
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:MSChart コントロール で凡例を表示する                               *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  MSChart コントロール で凡例の表示・非表示設定 2007/07/23
-----------------------------------------------------------------------------------

●.LegendText = "国語" に "国 語" だとか元のデータと違う内容を設定すると以後の
 系列を判定する場合に変更した内容と照合しないと照合できないので注意して下さい。


下記をsChartViewSet() プロシージャ内に追加して下さい。

Private Sub sChartViewSet()
'グラフの表示設定

'★追加部分
'------------------- 凡例の表示 ----------------------
   With MSChart1
      '凡例文字の設定
      'チャート コントロールの ColumnLabel プロパティを実行時に変更すると、
      'キャプションの文字が途切れて表示されてしまいますので下記のように設定
      'して下さい。
      .Plot.SeriesCollection(1).LegendText = "国語"
      .Plot.SeriesCollection(2).LegendText = "数学"
      .Plot.SeriesCollection(3).LegendText = "英語"

      '凡例にフレームをつけます。
      .Legend.Backdrop.Frame.FrameColor.Set 0, 0, 255       'フレームを青で作成
      .Legend.Backdrop.Frame.Style = VtFrameStyleDoubleLine '2重線で囲う
      .Legend.Backdrop.Frame.Width = 40                     '枠の太さを設定
      .Legend.Backdrop.Frame.SpaceColor.Set 255, 0, 0       '2重線の間を赤で塗りつぶしす

'      '凡例の表示位置を設定
      .Legend.Location.LocationType = VtChLocationTypeRight
      
      .ShowLegend = True      '凡例を表示する
      
    '  .ShowLegend = False    '非表示の場合
   End With
'----------------------------------------------------------------

End Sub


'表示位置は下記の定数の中から選んで下さい。
VtChLocationTypeTop          '上
VtChLocationTypeTopLeft      '左上
VtChLocationTypeTopRight     '右上
VtChLocationTypeLeft         '左
VtChLocationTypeRight        '右
VtChLocationTypeBottom       '下
VtChLocationTypeBottomLeft   '左下
VtChLocationTypeBottomRight  '右下
VtChLocationTypeCustom       'カスタム

定数があっても設定が有効にならない場合がありますし、定数が無い設定は出来ないと思って下さい。(質問しても回答が得られない)

-----------------------------------------------------------------------------------

 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/chartno2-1.gif


メンテ
マーカーの表示例(VB6.0)  (No.3の個別表示) [スレッド一覧へ]
日時: 2007/07/23 11:46
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:MSChart コントロール で凡例を表示する                               *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  MSChart コントロール でマーカーの表示例 2007/07/23
-----------------------------------------------------------------------------------

下記をsChartViewSet() プロシージャ内に追加して下さい。

'★追加部分
'------------------- マーカーの表示 ----------------------
   '標準のマーカーを表示する場合
   With MSChart1
      Dim s As Series
      For Each s In .Plot.SeriesCollection
         s.SeriesMarker.Show = True
      Next s
   End With

'--------------------------------------------------------

   '系列個別に任意のマーカを設定
   For Each s In MSChart1.Plot.SeriesCollection
      '自動のマーカを解除
      'Auto プロパティがあるものは、解除してからでないと設定が有効にならない
      s.SeriesMarker.Auto = False
      '個別にマーカを指定
      Select Case s
         Case "国 語"
            s.DataPoints.Item(-1).Marker.Style = VtMarkerStyleUpTriangle
            'マーカーの色だけ変更
            s.DataPoints.Item(-1).Marker.Pen.VtColor.Set 0, 255, 255
         Case "数 学"
            s.DataPoints.Item(-1).Marker.Style = VtMarkerStyleCircle
            'マーカーのサイズを変更(大きく)
            s.DataPoints.Item(-1).Marker.Size = 400
         Case "英 語"
            s.DataPoints.Item(-1).Marker.Style = VtMarkerStyle3dBall
      End Select
      s.SeriesMarker.Show = True
   Next
'--------------------------------------------------------------------------------

マーカーの定数は下記より選択して下さい。
VtMarkerStyleNull               '隠ぺい
VtMarkerStyleDash               'ダッシュ マーカー
VtMarkerStylePlus               'プラス マーカー
VtMarkerStyleX X                'マーカー
VtMarkerStyleStar               '星マーカー
VtMarkerStyleCircle             '円マーカー
VtMarkerStyleSquare             '4 角マーカー
VtMarkerStyleDiamond            '菱形マーカー
VtMarkerStyleUpTriangle         '3 角マーカー
VtMarkerStyleDownTriangle       '逆 3 角マーカー
VtMarkerStyleFilledCircle       '塗りつぶし円マーカー
VtMarkerStyleFilledSquare       '塗りつぶし 4 角マーカー
VtMarkerStyleFilledDiamond      '塗りつぶし菱形マーカー
VtMarkerStyleFilledUpTriangle   '塗りつぶし 3 角マーカー
VtMarkerStyleFilledDownTriangle '塗りつぶし逆 3 角マーカー
VtMarkerStyle3dBall             '3 次元ボール マーカー

---------------------------------------------------------------------
★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/Chart001.htm
メンテ
MSChartで軸目盛り線の設定(X軸・Y軸・第2Y軸)(VB6.0)  (No.4の個別表示) [スレッド一覧へ]
日時: 2007/07/23 14:44
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:軸目盛り線の設定(X軸・Y軸・第2Y軸)                                *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  MSChartで軸目盛り線の設定(X軸・Y軸・第2Y軸)  2007/07/23
-----------------------------------------------------------------------------------

下記をsChartViewSet() プロシージャ内に追加して下さい。

'★追加部分

'------------------- 目盛りを設定 ----------------------
   Dim i As Integer
   For i = 0 To 2
      With MSChart1.Plot.Axis(i).Pen
         .Width = 70                   '目盛り線の太さを設定
         Select Case i
            Case 0                     '下側の緑色の線  VtChAxisIdX (X軸)
               .VtColor.Set 0, 255, 0
            Case 1                     '左側の青色の線  VtChAxisIdY (Y軸)
               .VtColor.Set 0, 0, 255
            Case 2                     '右側の赤色の線  VtChAxisIdY2 (第2Y軸)
               .VtColor.Set 255, 0, 0
         End Select
      End With
   Next
'---------------------------------------------------------------

 X軸(項目軸)・Y軸(数値軸)・第2Y軸(第2数値軸) については、下図の実行図で
 位置・呼び名等を確認下さい。
  
 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/Chart002.htm
メンテ
MSChartでY軸(数値軸)の目盛り線の設定 (VB6.0)  (No.5の個別表示) [スレッド一覧へ]
日時: 2007/07/26 18:51
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:Y軸(数値軸)の目盛り線の設定                                         *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  MSChartでY軸(数値軸)の目盛り線の設定  2007/07/23
-----------------------------------------------------------------------------------

下記をsChartViewSet() プロシージャ内に追加して下さい。

'★追加部分

'------------------- Y軸(数値軸)の目盛り線の設定  VtChAxisIdY -----------------
   '目盛り線の設定(点数の横線)
   With MSChart1.Plot.Axis(VtChAxisIdY).ValueScale
      .Auto = False                          '自動設定を解除
      .Maximum = 120                         '最大値
      .Minimum = 0                           '最小値
      .MajorDivision = 12                    '目盛り線の数(等分)10点毎
      .MinorDivision = 2                     '補助目盛り線等分   5点毎
   End With

   'メモリの単位が6桁を超えると[1.2e+006]のように表示されますその時は
   '下記のように設定して下さい。
'   MSChart1.Plot.Axis(VtChAxisIdY).Labels.Item(1).Format = "#,###"
'   MSChart1.Plot.Axis(VtChAxisIdY2).Labels.Item(1).Format = "####"
  

   '目盛り線の数値の部分の横線の描き方(グラフ軸の目盛り区分を示すマーカー(太い青色の線))
   With Form1.MSChart1.Plot.Axis(VtChAxisIdY, 1)
      .Tick.Length = 300                     '結果が解り易いように長くしております。
      .Tick.Style = VtChAxisTickStyleOutside '目盛りは軸の外側に表示
      '.Style = VtChAxisTickStyleInside      '目盛りは軸の内側に表示
      .Pen.Width = 50                        '線の太さを設定
      .Pen.VtColor.Set 0, 0, 255             '線の色を設定(青色)
   End With
  
   '目盛り線の数(等分)10点毎 の線の色を設定
   With MSChart1.Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen
      .Width = 40                            '線の太さを設定
      .VtColor.Set 0, 255, 255               '横の線(水色)
   End With
  
   '補助目盛り線の色を設定(5点毎)
   With MSChart1.Plot.Axis(VtChAxisIdY).AxisGrid.MinorPen
      .Width = 20                            '線種によっては変化が少ない場合がある
      .Style = VtPenStyleDotted              '線種を設定(点線)
      .VtColor.Set 255, 0, 255               '補助目盛り線の色を設定(桃色)
   End With
'---------------------------------------------------------------------------------

 Y軸目盛りの区分線・等分線・補助目盛り線 については、下図の実行図で
 位置・呼び名等を確認下さい。
  
 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/Chart003.htm

メンテ
X 軸のラベルの間隔、補助メモリ等の設定(VB6.0)  (No.6の個別表示) [スレッド一覧へ]
日時: 2007/07/25 10:39
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:X 軸のラベルの間隔、補助メモリ等の設定                              *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  MSChartでX 軸のラベルの間隔、補助メモリ等の設定  2007/07/23
-----------------------------------------------------------------------------------

下記をsChartViewSet() プロシージャ内に追加して下さい。

'★追加部分

'---------------- X 軸のラベルの間隔、補助メモリの表示単位の設定 -------------------
   '実行結果の図では、解り易いように緑色の太い線で表示しております。
   With MSChart1.Plot.Axis(VtChAxisIdX).CategoryScale
      .Auto = False
      'ラベルの表示間隔 2=飛び飛びに氏名を表示
      .DivisionsPerLabel = 1  '1名毎
      'ラベルの区切り   2=2名一緒に一枠に表示
      .DivisionsPerTick = 2   '2名毎に区切り線を表示
   End With
   '区切りを設定しない場合
'   MSChart1.Plot.Axis(VtChAxisIdX).Tick.Style = VtChAxisTickStyleNone
  
   'X 軸のラベルの図表の間隔線(桃色の縦線の部分)
   With MSChart1.Plot.Axis(VtChAxisIdX).AxisGrid
      .MajorPen.Style = VtPenStyleDitted
      .MajorPen.Width = 60
      .MajorPen.VtColor.Set 255, 0, 255
   End With
' Y軸の目盛り区分を示すマーカーのように長さや表示スタイルは
' 折れ線グラフの時のみ有効(別途、No.12 の表示例参照)
'---------------------------------------------------------------

 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/chartno6-1.gif
メンテ
第2Y軸の目盛り区分線を設定(VB6.0)  (No.7の個別表示) [スレッド一覧へ]
日時: 2007/07/24 06:17
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:第2Y軸の目盛り区分を示すマーカーの設定                             *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  MSChartで第2Y軸の目盛り区分線を設定  2007/07/24
-----------------------------------------------------------------------------------

>>5 で Y軸 に設定したのと同じ事を第2Y軸で実施
'第2Y軸の目盛り区分を示すマーカーの設定(右側の赤色の縦線の部分)

'------------------- 第2Y軸の目盛り区分線を設定 ----------------------
   With MSChart1.Plot.Axis(VtChAxisIdY2, 1)
      .Tick.Length = 300                        '結果が解り易いように長くしております。
      '.Tick.Style = VtChAxisTickStyleOutside   '目盛りは軸の外側に表示
      .Tick.Style = VtChAxisTickStyleInside     '目盛りは軸の内側に表示
      .Pen.Width = 50                           '線の太さを設定
      .Pen.VtColor.Set 255, 0, 0                '線の色を設定(赤色)
   End With
  
'---------------------------------------------------------------

 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/chart005.gif

メンテ
グラフタイトルの設定(VB6.0)  (No.8の個別表示) [スレッド一覧へ]
日時: 2007/07/24 07:49
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:グラフタイトルの設定                                                *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  MSChartでグラフタイトルの設定  2007/07/24
-----------------------------------------------------------------------------------
TextLayout、VtFont、Backdrop 等のオブジェクトに対する、Size、Fill、Brush、Style、Shadow 等のプロパティの設定の組合せで、表示設定ができます、どのように表示できるかは、インテリセンス機能を使って、自動メンバー表示された物を選んで組合わせて試して見て下さい。
自分で試すのが面倒だからと言って、すぐ掲示板に質問するような事をしているといつまで経っても覚えられませんよ。
MSMSChart コントロールは、他のコントロールと違ってこの辺の組合せが複雑なので、エラーもでずに設定ができても、設定が有効にならない場合が多々あります。


下記をsChartViewSet() プロシージャ内に追加して下さい。

'★追加部分

'------------------- グラフタイトルの設定 ----------------------
   With MSChart1.Title
      'タイトル文字の設定
      .Text = "期末テスト結果"
      '表示位置
      .TextLayout.HorzAlignment = VtHorizontalAlignmentCenter
      'タイトルを水平方向に表示
      .TextLayout.Orientation = VtOrientationHorizontal
      .VtFont.Name = "MS 明朝"
      'フォントサイズ
      .VtFont.Size = 18
      'フォントスタイル
      .VtFont.Style = VtFontStyleBold
      '図表のフォント効果を設定(アンダーライン)
      .VtFont.Effect = VtFontEffectUnderline
      'タイトルの文字の表示色
      .VtFont.VtColor.Set 255, 0, 0
      
      'タイトルの背景のスタイル
      .Backdrop.Fill.Style = VtFillStyleBrush
      'タイトルの背景の色(黄色)
      .Backdrop.Fill.Brush.FillColor.Set 255, 255, 0
      'ハッチングを設定
      .Backdrop.Fill.Brush.Style = VtBrushStyleHatched
      'タイトルの背景に影をつける
      .Backdrop.Shadow.Style = VtShadowStyleDrop
   End With
'---------------------------------------------------------------


 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/chart006.gif


メンテ
Y軸のタイトルの設定(VB6.0)  (No.9の個別表示) [スレッド一覧へ]
日時: 2007/07/24 11:04
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:Y軸のタイトルの設定                                                 *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  Y軸のタイトルの設定  2007/07/24
-----------------------------------------------------------------------------------

下記をsChartViewSet() プロシージャ内に追加して下さい。

'★追加部分
'------------------- Y軸のタイトルの設定 ----------------------
With MSChart1.Plot.Axis(VtChAxisIdY).AxisTitle
'タイトルの設定
.Text = "点 数"
'タイトルのフォントサイズを設定
.VtFont.Size = 12
'タイトルのフォントカラーを設定(赤色)
.VtFont.VtColor.Set 255, 0, 0
'タイトルのフォントを太字に設定
.VtFont.Style = VtFontStyleBold

'Y軸のタイトルを縦向き表示
.TextLayout.Orientation = VtOrientationVertical '縦書きで表示
'.TextLayout.Orientation = VtOrientationHorizontal '横書きで表示

'---------------------------------------------------------------------------
'.TextLayout.VertAlignment = VtVerticalAlignmentBottom '有効にならない
'.TextLayout.HorzAlignment = VtHorizontalAlignmentCenter '有効にならない
'従って、Y軸の中心以外の場所で表示できない。
End With
'----------------------------------------------------------------------------------

 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/chartno9-1.gif
メンテ
X軸のタイトル及び脚注の設定(VB6.0)  (No.10の個別表示) [スレッド一覧へ]
日時: 2007/07/24 11:03
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:X軸のタイトル及び脚注の設定                                         *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  X軸のタイトル及び脚注の設定  2007/07/24
-----------------------------------------------------------------------------------

下記をsChartViewSet() プロシージャ内に追加して下さい。

'★追加部分

'------------ X軸のタイトル(生徒名)及び脚注(テストの実施日)の設定 -----------------
   With MSChart1.Plot.Axis(VtChAxisIdX).AxisTitle
      'タイトルの設定
      .Text = "生 徒 名"
      'タイトルのフォントサイズを設定
      .VtFont.Size = 12
      'タイトルのフォントカラーを設定(緑色)
      .VtFont.VtColor.Set 0, 255, 0
      'タイトルのフォントを太字に設定
      .VtFont.Style = VtFontStyleBold

      'タイトル(生徒名)にフレームをつけます。
      .Backdrop.Frame.FrameColor.Set 0, 0, 255        'フレームを青で作成
      .Backdrop.Frame.Style = VtFrameStyleSingleLine  '1重線で囲う


      'X軸のタイトルを縦向き表示
      '.TextLayout.Orientation = VtOrientationVertical   '縦書きで表示
      .TextLayout.Orientation = VtOrientationHorizontal  '横書きで表示

      '---------------------------------------------------------------------------
      '.TextLayout.VertAlignment = VtVerticalAlignmentBottom      '有効にならない
      .TextLayout.HorzAlignment = VtHorizontalAlignmentRight      '有効にならない
      '従って、X軸の中心以外の場所で表示できない。
    
   End With
    
   '脚注の設定
   With MSChart1
      .FootnoteText = "このテストは平成19年7月24日実施"
      .Footnote.VtFont.VtColor.Set 0, 255, 0
      .Footnote.VtFont.Size = 12
   End With

--------------------------------------------------------------------------------

 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/chartno10-1.gif

メンテ
データポイントラベルの設定(VB6.0)  (No.11の個別表示) [スレッド一覧へ]
日時: 2007/07/26 20:05
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:第2Y軸の目盛り区分を示すマーカーの設定                             *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  MSChartで第2Y軸の目盛り区分線を設定  2007/07/24
-----------------------------------------------------------------------------------
よく個々のデータに対して設定ができないかと言った質問がありますが、基本的に系列単位の設定になります。
(従って、質問されても殆ど回答が返ってきません)


 下記をsChartViewSet() プロシージャ内に追加して下さい。

 '★追加部分
'------------------- データポイントラベルの設定 ----------------------
   Dim s As Series
   For Each s In MSChart1.Plot.SeriesCollection
      With s.DataPoints.Item(-1).DataPointLabel
         '表示位置(ラベルはデータ ポイントの上に表示)
         .LocationType = VtChLabelLocationTypeAbovePoint
        
         'データ ポイントの値がラベルに表示
         .Component = VtChLabelComponentValue
         .ValueFormat = "0"                     '"0.0" "#,###.0" 表示フォーマット
      
         'フォントサイズとスタイルを設定
         .VtFont.Size = 12
         .VtFont.Style = VtFontStyleBold
        
         '表示色棒の色と同じ色で
         .VtFont.VtColor.Set _
         s.DataPoints(-1).Brush.FillColor.Red, _
         s.DataPoints(-1).Brush.FillColor.Green, _
         s.DataPoints(-1).Brush.FillColor.Blue
        
         If s.LegendText = "国語" Then
            .VtFont.VtColor.Set 255, 0, 255        '別に指定する場合
         End If
      
       '  .Backdrop.Frame.Style = VtFrameStyleSingleLine    '可能だが見苦しい
      End With
   Next
'---------------------------------------------------------------
※ データが 0 の場合ラベルに 0 を表示させたくないような場合は、値を "" と
  置き換えて下さい。


 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/chartno11-1.gif
メンテ
X軸の目盛り区分線を設定(折れ線の時のみ可)(VB6.0)  (No.12の個別表示) [スレッド一覧へ]
日時: 2007/07/24 20:06
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:X軸の目盛り区分線を設定                                             *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  MSChartでX軸の目盛り区分線を設定  2007/07/24
-----------------------------------------------------------------------------------
下記のように特定のグラフの時のみ設定が有効になる場合もあります。

 下記をsChartViewSet() プロシージャ内に追加して下さい。

 '★追加部分
'------------------- X軸の目盛り区分線を設定(折れ線の時のみ可) --------------
   MSChart1.chartType = VtChChartType2dLine
   With MSChart1.Plot.Axis(VtChAxisIdX)
      '折れ線の時のみ有効
      .CategoryScale.LabelTick = True        '軸の中央に表示
      '上記がTrurの場合に有効
      .Tick.Length = 400                     '結果が解り易いように長くしております。
      .Tick.Style = VtChAxisTickStyleOutside '目盛りは軸の外側に表示
      .Pen.Width = 50                        '線の太さを設定
      .Pen.VtColor.Set 0, 255, 0             '線の色を設定(緑色)
   End With
'---------------------------------------------------------------

 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/chartno12-1.gif

メンテ
縦棒と折線の複合グラフを表示(VB6.0)  (No.13の個別表示) [スレッド一覧へ]
日時: 2007/07/27 10:58
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:縦棒と折線の複合グラフを表示、2次元組合せ                            *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  MSChartで縦棒と折線の複合グラフを表示  2007/07/25
-----------------------------------------------------------------------------------
一応全部のコードを掲載しておきますが、表示するデータを追加しただけです。

Private Sub sChartViewSet()
'グラフの表示設定
'------------------- 複合グラフの表示設定 ----------------------
   With MSChart1
      'グラフの種類を 2次元組み合わせ を選択
      .chartType = VtChChartType2dCombination
      
      '合計の系列だけを折線で表示
      .Plot.SeriesCollection(4).SeriesType = VtChSeriesType2dLine
      
      '合計の系列だけを第2Y軸で表示
      .Plot.SeriesCollection(4).SecondaryAxis = True
   End With
  ' 一応これだけの設定で表示できます。
'---------------------------------------------------------------

'以下の部分は好みで設定して下さい。
  
   '目盛り線の設定(点数の横線)Y軸(数値軸)
   With MSChart1.Plot.Axis(VtChAxisIdY).ValueScale
      .Auto = False           '自動設定を解除
      .Maximum = 120          '最大値
      .Minimum = 0            '最小値
      .MajorDivision = 6      '目盛り線の数(等分)20点毎
      .MinorDivision = 2      '補助目盛り線等分  10点毎
   End With
  
   '目盛り線の設定(合計点数の横線)第2Y軸(第2数値軸)
   With MSChart1.Plot.Axis(VtChAxisIdY2).ValueScale
      .Auto = False           '自動設定を解除
      .Maximum = 300          '最大値
      .Minimum = 0            '最小値
      .MajorDivision = 6      '目盛り線の数(等分)50点毎
      .MinorDivision = 2      '補助目盛り線等分  25点毎
   End With
  
  
   '折れ線だけにマーカー・データポイントラベル・線の色を設定
   With MSChart1.Plot.SeriesCollection(4)
      'マーカーの設定
      .SeriesMarker.Auto = False
      .DataPoints.Item(-1).Marker.Style = VtMarkerStyleCircle
      .DataPoints.Item(-1).Marker.Pen.VtColor.Set 255, 0, 255
      .SeriesMarker.Show = True
      'データポイントラベルの表示
      .DataPoints.Item(-1).DataPointLabel.LocationType = VtChLabelLocationTypeAbovePoint
      '折れ線の色を水色で表示
      .DataPoints(-1).Brush.FillColor.Set 0, 255, 255
   End With
End Sub

'-----------------------------------------------
'折れ線で表示する 合計点 をデータに追加
Private Sub sDataOpen()
'グラフ用のデータを作成及び読み込み
   Dim Dat(0 To 5, 0 To 4) As Variant
   Dat(0, 1) = "国語"
   Dat(0, 2) = "数学"
   Dat(0, 3) = "英語"
   Dat(0, 4) = "合計"
  
   Dat(1, 0) = "浅野"
   Dat(1, 1) = 69       '国語の点数
   Dat(1, 2) = 81       '数学の点数
   Dat(1, 3) = 73       '英語の点数
   Dat(1, 4) = 223      '合計の点数
  
   Dat(2, 0) = "安室"
   Dat(2, 1) = 87
   Dat(2, 2) = 80
   Dat(2, 3) = 72
   Dat(2, 4) = 239      '合計の点数
  
   Dat(3, 0) = "加藤"
   Dat(3, 1) = 74
   Dat(3, 2) = 82
   Dat(3, 3) = 96
   Dat(3, 4) = 252      '合計の点数
  
   Dat(4, 0) = "斉藤"
   Dat(4, 1) = 71
   Dat(4, 2) = 69
   Dat(4, 3) = 81
   Dat(4, 4) = 221      '合計の点数
  
   Dat(5, 0) = "鈴木"
   Dat(5, 1) = 84
   Dat(5, 2) = 86
   Dat(5, 3) = 75
   Dat(5, 4) = 245      '合計の点数
  
   'グラフに表示する配列データを設定する
   MSChart1.ChartData = Dat()
End Sub



'-------------------------------------------------------------
'   以下の部分は変更無し

Private Sub Form_Load()
   'フォームのサイズを設定(好みで変更してください)
   Form1.Move 0, 0, 10400, 7000
   'MSChart コントロールの表示サイズを設定
   MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   Call sDataOpen       'データの読み込み
   Call sChartViewSet   'グラフの表示設定
End Sub

Private Sub Form_Resize()
   'フォームのサイズ変更に合わせて MSChart コントロールの表示サイズも変更する
   MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   Me.Caption = "複合グラフで合計点を折れ線で表示"
End Sub


'---------------------------------------------------------------

 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/chartno13-1.gif
メンテ
棒グラフの棒の色を設定(VB6.0)  (No.14の個別表示) [スレッド一覧へ]
日時: 2007/07/25 21:16
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:棒グラフの棒の色を設定                                             *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  MSChartで棒グラフの棒の色を設定  2007/07/25
-----------------------------------------------------------------------------------

 下記をsChartViewSet() プロシージャ内に追加して下さい。

 '★追加部分

'---------------------- 棒グラフの棒の色を設定 ----------------------
  
   '棒グラフの棒の色を設定
   Dim i As Long
   For i = 1 To 3
      With MSChart1.Plot.SeriesCollection(i).DataPoints(-1).Brush
         '色の自動設定を解除します。
         .FillColor.Automatic = False
         '色を設定します。
         If i = 1 Then   '国語
            .FillColor.Set 200, 0, 200  
         End If
         If i = 2 Then   '数学
            .FillColor.Set 218, 165, 32
         End If
         If i = 3 Then   '英語
            .FillColor.Set 0, 129, 128
         End If
      End With
   Next i
  
'----------------------------------------------------------------------
★ くどいようですが、系列内の個々のデータに対しての設定は出来ません。
 

 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/chartno14-1.gif

メンテ
棒グラフの棒の内部色を設定(VB6.0)  (No.15の個別表示) [スレッド一覧へ]
日時: 2007/07/26 15:30
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:棒グラフの棒の内部色を設定                                          *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  MSChartで棒グラフの棒の内部色を設定  2007/07/25
-----------------------------------------------------------------------------------

 下記をsChartViewSet() プロシージャ内に追加して下さい。

 '★追加部分

'---------------------- 棒グラフの棒の内部色を設定 ----------------------
    
   With MSChart1.Plot.SeriesCollection(1).DataPoints(-1).Brush
      'ブラシタイプを設定します。(国語だけ設定)
      .Style = VtBrushStylePattern        'ビットマップ パターン ブラシ
      'ブラシで使用されるパターンまたはハッチングを設定します。
      .Index = VtBrushPatternChecks       'チェック模様
      .PatternColor.Set 255, 255, 255     '白色の部分
   End With

   With MSChart1.Plot.SeriesCollection(3).DataPoints(-1).EdgePen
      '縁の線種を設定(反映されない)
      .Style = VtPenStyleDotted
      '系列の線 / ふちの幅の設定(英語だけ太く設定)
      .Width = 40
      '系列の線 / ふちの色の設定(英語だけ赤色に設定)
      .VtColor.Set 255, 0, 0
   End With
'---------------------------------------------------------------

★ くどいようですが、系列内の個々のデータに対しての設定は出来ません。
 

 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/chartno15-1.gif
メンテ
X 軸のラベルテキストの表示設定(VB6.0)  (No.16の個別表示) [スレッド一覧へ]
日時: 2007/07/26 15:32
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:X 軸のラベルテキストの表示設定,,,,,                                 *
***********************************************************************************

元質問:MSChartについて - しゅう 2005/02/03-11:11 No.1935

MSChartのX軸ラベルの内容を縦書きで20文字程度入れたのですが、上手く表示されません。

-----------------------------------------------------------------------------------
投稿者:花ちゃん  X 軸のラベルテキストの表示設定  2007/07/25
-----------------------------------------------------------------------------------

縦書きに表示は、できますが、折り返して表示されないので縦に長くなってしまう。
(できないのか、方法が間違っているのかは不明)
因みにグラフタイトルでなら折り返して表示されます。

 下記をsChartViewSet() プロシージャ内に追加して下さい。

 '★追加部分

'------------------- X 軸のラベルテキストの表示設定 ----------------------
   With MSChart1
      .Row = 1
      'テスト用に長い文字列をセット
      .RowLabel = "あいうえおかきくけこさしすせそたちつてと"
   End With
  
   With MSChart1.Plot.Axis(VtChAxisIdX).Labels.Item(1)
      .Auto = False
      .VtFont.Size = 12
      
      '下記では WordWrap が有効にならない。(;_;)
      '(方法があれば教えてください)
      .TextLayout.WordWrap = True
      
      
      '上揃えで表示
      .TextLayout.VertAlignment = VtVerticalAlignmentTop
      '縦書き表示
      .TextLayout.Orientation = VtOrientationVertical
   End With
'---------------------------------------------------------------

 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/chartno16-1.gif

メンテ
グラフデータの表示単位を変更する方法(VB6.0)  (No.17の個別表示) [スレッド一覧へ]
日時: 2007/07/26 11:14
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:グラフデータの表示単位を変更,,,,,                                   *
***********************************************************************************

元質問:MSChartのY軸の倍率 - HB  2003/10/14-09:24 No.6229

元質問内容は、多分題名のような事だと思うのですが、....。
(詳しい質問内容は、上記ログをご覧下さい)

-----------------------------------------------------------------------------------
投稿者:花ちゃん  グラフデータの表示単位を変更する方法  2007/07/26
-----------------------------------------------------------------------------------


'★追加部分

下記をsChartViewSet() プロシージャ内に追加して下さい。
'------------------- グラフデータの表示単位を変更 ----------------------
   With MSChart1
      Call setUnit(1000)   '単位を千に設定
   End With
'---------------------------------------------------------------

別途、下記プロシージャを追加して下さい。
Private Sub setUnit(ByVal unit As Long)
'表示するデータの桁合せ
   Dim i As Long, j As Long
   With MSChart1
      For i = 0 To .ColumnCount - 1
         .Column = i + 1
         For j = 0 To .RowCount - 1
            .Row = j + 1
            '.Data = .Data * unit  参考図は、便宜上こちらを使用しました。
            .Data = .Data / unit
         Next j
      Next i
   End With
End Sub


----------------------------------------------------------------
上記実行図、通常は、.Data / 1000 のようにして、単位を 単位:千円 のように
するのですが、サンプルでは、使用した元データが2桁の数字なので、逆に桁上げ
で表示しております。
又、結果が解り易いように別途、データポイントラベルも表示しております。

 http://hanatyan.sakura.ne.jp/samplepic/chartno17-1.gif
メンテ
グラフの表示を印刷用にモノクロ(白黒)で表示(VB6.0)  (No.18の個別表示) [スレッド一覧へ]
日時: 2007/07/26 13:27
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:グラフをモノクロで表示,白黒,,,,                                     *
***********************************************************************************

-----------------------------------------------------------------------------------
投稿者:花ちゃん  グラフの表示を印刷用にモノクロ表示  2007/07/26
-----------------------------------------------------------------------------------

'★追加部分

下記をsChartViewSet() プロシージャ内に追加して下さい。

'------------------- グラフの表示を印刷用にモノクロ表示 ----------------------
   Dim s As series
   For Each s In MSChart1.Plot.SeriesCollection
      With s.DataPoints(-1).Brush
         '表示スタイルをパターン表示にします
         .Style = VtBrushStylePattern
         '塗りつぶしパターンを決定します
         If s.LegendText = "国語" Then
            .Index = VtBrushPattern50Percent    ' 50% パターン カラー
         ElseIf s.LegendText = "数学" Then
            .Index = VtBrushPatternChecks       'チェック模様
         Else
            .Index = VtBrushPatternGrid         'グリッド模様
         End If
        
         '塗りつぶす色の自動設定を解除します
         .FillColor.Automatic = False
         '塗りつぶす色を黒に設定します
         .FillColor.Set 0, 0, 0
         'グラフ自体の色の自動設定を解除します
         .PatternColor.Automatic = False
         'グラフ自体の色を白に設定します
         .PatternColor.Set 255, 255, 255
      End With
   Next
'---------------------------------------------------------------

 ★上記実行図
 http://hanatyan.sakura.ne.jp/samplepic/chartno18-1.gif
メンテ
グラフ内のクリックした位置のデータを取得表示する(VB6.0)  (No.19の個別表示) [スレッド一覧へ]
日時: 2007/07/27 14:07
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:グラフ内のクリックした位置のデータを取得表示する                    *
***********************************************************************************

元質問:MSChartのグラフの値について - MacB  2003/08/28-23:08 No.5652

Excelで作った折れ線グラフだとグラフの折れ線上にマウスを持っていくとその値が表示されますが、VBでも同じようなことができるのでしょうか?

-----------------------------------------------------------------------------------
投稿者:花ちゃん グラフ内のクリックした位置のデータを取得表示する  2007/07/26
-----------------------------------------------------------------------------------
当時は、できませんと答えてしまったが、(^_^;)

'★追加部分

下記のイベントプロシージャを追加して下さい。
但し、一旦クリックしてアクティブにしてからクリックしないとうまく反応しないし、個別データに対してどうこうする事はできませんので、取得のみという事で。
(先にSeriesSelectedイベントが発生するようなので)

Private Sub MSChart1_PointSelected(Series As Integer, _
            DataPoint As Integer, MouseFlags As Integer, Cancel As Integer)
'クリックした系列の個別のデータの値を取得表示する
   Dim kamoku As String
   Dim seito  As String
   Dim data   As Variant
   With MSChart1
      kamoku = .ChartData(0, Series)                     '科目名
      seito = .ChartData(DataPoint, 0)                   '生徒名
      data = .ChartData(DataPoint, Series)               '配列内のデータを取得
      kamoku = .Plot.SeriesCollection(Series).LegendText '科目名(こちらでも可)
   End With
   MsgBox seito & "さんの" & kamoku & "の点数は" & data & "です。"
End Sub

 ★上記実行図(一部合成しております)
 http://hanatyan.sakura.ne.jp/samplepic/chartno19-1.gif
メンテ
MSChart コントロール 関係のサポート技術情報(VB6.0)  (No.20の個別表示) [スレッド一覧へ]
日時: 2007/07/26 15:47
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:チャート関係のサポート技術情報                                      *
***********************************************************************************

-----------------------------------------------------------------------------------
投稿者:花ちゃん チャート関係のサポート技術情報  2007/07/26
-----------------------------------------------------------------------------------


http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view2&f=103&no=9
メンテ
折れ線グラフで値が 0 の時に線を描画しないように設定(VB6.0)  (No.21の個別表示) [スレッド一覧へ]
日時: 2007/07/28 23:08
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:折れ線グラフで値が 0 の時に線を描画しないように設定                 *
***********************************************************************************

元質問:グラフ表示について - だいく  2002/10/17-10:49 No.1047

MSChartを使用して折れ線グラフを作成しています。
この折れ線グラフで値が0の時にこのポイントだけ線を描画しないようにしたいのですが、
どうすればよいか分かりません。

-----------------------------------------------------------------------------------
投稿者:花ちゃん 折れ線グラフで値が 0 の時に線を描画しないように設定  2007/07/26
-----------------------------------------------------------------------------------
当時この質問も出来ないと答えてしまった。(^^ゞ


下記をsChartViewSet() プロシージャ内に追加して下さい。
グラフの種類を折れ線に設定して下さい。
データはどれか適当に 0 に設定して下さい。

'★追加部分

'--------------- 折れ線グラフで値が 0 の時に線を描画しないように設定 ---------
   Dim i As Long
   Dim j As Long
   With MSChart1
      For i = 0 To .ColumnCount - 1
         For j = 0 To .RowCount - 1
            .Row = j + 1
            .Column = i + 1
            If Val(.data) = 0 Then
               .DataGrid.SetData j + 1, i + 1, 0, True
            End If
         Next j
      Next i
   End With

'----------------------------------------
以前は、上記のように設定していたのですが、SetData メソッド の第4引数が True の場合、
データ ポイントは NULL 値になりチャート上では省略されるという事を知り下記のように
設定すると、上記と同様に設定した値が表示されません。

   object.SetData (row, column, dataPoint, nullFlag)

   '加藤 の英語の点数を プロット表示しない場合
      MSChart1.DataGrid.SetData 3, 3, 96, True

'---------------------------------------------------------------

 通常の場合の実行図
 http://hanatyan.sakura.ne.jp/samplepic/chartno21-1.gif

  値が0の場合線を引かない設定の実行結果
 http://hanatyan.sakura.ne.jp/samplepic/chartno21-2.gif
メンテ
ADOを使ってCSVファイルをMSChartコントロールにセットする(VB6.0)  (No.22の個別表示) [スレッド一覧へ]
日時: 2007/07/28 14:26
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:ADO,ADODC,データ連結,Recordset,DataSource,                          *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん ADOを使ってCSVファイルをMSChartコントロールにセットする 2007/07/26
-----------------------------------------------------------------------------------
HDR=NO や HDR=YES としても、国語、数学、英語 のデータが読み込まれなかったり、2行目の
データが読み込まれなかったりします。

(下記サイトでも問題になっており、解決していないようです。)
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/200405/200405_04050078.html

MSChartコントロール では、最初の行・列のデータが文字列なら項目行として扱うように設定
されているのに対し、ADOでは、1行目を項目行として扱うか、扱わないかの設定になっている
のでこのような事がおきます。
逆に、列の方の項目列は上手く読み込まれる事で理解して頂けるかと思います。

そこで、そう言った事を無視して全ての行、列、をデータ行として読み込むようにしてやれば
いい訳で、HDR=YES とし(既定でHDR=YESなので省略してもよい)、RS.MoveFirst で最初のレコー
ドに移動してから、MSChartコントロール に、Set MSChart1.DataSource = RS としてやれば
全てのデータが、MSChartコントロールにセットされるので、後は、MSChartコントロールが
文字列は、項目として扱ってくれるので上手く表示されるようになります。

当初は、1行目のデータは凡例としてしか使用しないので、別途コードで記入するようにして
いたのですが、テストしていた時に偶然回避策が見つかったので、その方法を掲載して置きます。
(コロンブスの卵と同じで理由と対策が解れば何でもない事です。)


----------------------------------------------------------------------------------
デザイン画面は同じものを使って下さい。
参照設定で Microsoft ActiveX Data Objects 2.* Libraryにチェックを入れておいて下さい

Option Explicit
Private Sub Form_Load()
   Form1.Move 0, 0, 10400, 7000
   MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   Dim CN As New ADODB.Connection, RS As New ADODB.Recordset, strSQL As String
   Dim FolderName As String, DataFile As String
   FolderName = App.Path      'データのあるフォルダを取得
   DataFile = "Test.csv"      'データファイル名を取得

    'データベースに接続するための情報を設定する
   CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
      & FolderName & ";Extended Properties=""text;HDR=YES;FMT=Delimited;"";"
   CN.Open     'コネクションをオープン

   'Recordsetオブジェクトのオープン
   strSQL = "Select * From " & DataFile
   RS.Open strSQL, CN, adOpenStatic, adLockReadOnly, adCmdText
  
   '※ 一旦先頭(最初)のレコードに移動(ここがミソ)
   RS.MoveFirst

   Set MSChart1.DataSource = RS        'MSChartにデータを代入
   MSChart1.ShowLegend = True          '凡例を表示
   'Recordset・Connection を閉じる
   RS.Close
   CN.Close
  
   '参照を解放。
   Set RS = Nothing
   Set CN = Nothing
End Sub

------------------------------------------------------------------------------
 Excel で作成したCSVファイルの図
  http://hanatyan.sakura.ne.jp/samplepic/chartno22-1.gif

  上記コードの実行図
  http://hanatyan.sakura.ne.jp/samplepic/chartno22-2.gif
メンテ
クリックした系列のグラフの色を任意の色に変更する(VB6.0)  (No.23の個別表示) [スレッド一覧へ]
日時: 2007/07/27 14:50
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:グラフの色を指定の色に変更,クリックした系列                         *
***********************************************************************************

-----------------------------------------------------------------------------------
投稿者:花ちゃん クリックした系列のグラフの色を任意の色に変更する  2007/07/26
-----------------------------------------------------------------------------------
同様の質問も何度かでていたような(深く詮索しないでね)

但し、系列個別に指定の色で塗る事はできません。ピクチャーボックス上にでも転送すれば
出来るだろうが。

'★追加部分
CommonDialog1 をフォームに貼り付けておいて下さい。
下記のイベントプロシージャを追加して下さい。

Private Sub MSChart1_SeriesSelected(Series As Integer, _
                                MouseFlags As Integer, Cancel As Integer)
'クリックした系列のグラフの色を任意の色に変更する
   Dim r As Integer
   Dim g As Integer
   Dim b As Integer
   'CommonDialog より指定の色を取得
   On Error Resume Next
   With CommonDialog1
      .CancelError = True
      .ShowColor
      If Err.Number <> 0 Then
         Err.Clear
         Exit Sub
      End If
      r = .Color And vbRed
      g = (.Color And vbGreen) \ &H100
      b = (.Color And vbBlue) \ &H10000
   End With

   With MSChart1
      '2D および 3D の折れ線グラフはPen オブジェクトを使用
      If .chartType = VtChChartType2dLine Or .chartType = VtChChartType3dLine Then
         .Plot.SeriesCollection(Series).Pen.VtColor.Set r, g, b
      Else
         .Plot.SeriesCollection(Series).DataPoints(-1).Brush.FillColor.Set r, g, b
      End If
   End With
End Sub

-----------------------------------------------------------------------
上記の実行図(一部合成しております)

 http://hanatyan.sakura.ne.jp/samplepic/chartno23-1.gif


メンテ
グラフの背景を設定(VB6.0)  (No.24の個別表示) [スレッド一覧へ]
日時: 2007/07/27 15:39
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:グラフの背景を設定,グラフエリア,プロットエリア,,,                   *
***********************************************************************************

-----------------------------------------------------------------------------------
投稿者:花ちゃん  グラフの背景を設定  2007/07/26
-----------------------------------------------------------------------------------

'★追加部分

下記をsChartViewSet() プロシージャ内に追加して下さい。

'------------------- グラフの背景を設定 ----------------------
   With MSChart1.Plot
      .Backdrop.Fill.Style = VtFillStyleBrush
      'グラフエリアの背景色を設定(薄い黄色の部分)
      .Backdrop.Fill.Brush.FillColor.Set 255, 255, 150
      'フレーム(外枠)を表示
      .Backdrop.Frame.Style = VtFrameStyleThickInner
      '影を付ける
      .Backdrop.Shadow.Style = VtShadowStyleDrop

      '--------------------------------------------
      'プロットエリアを塗りつぶし
      .Wall.Brush.Style = VtBrushStyleSolid
      'プロットエリアの背景色を設定(薄い水色の部分)
      .Wall.Brush.FillColor.Set 200, 255, 255
   End With
'---------------------------------------------------------------

  上記コードの実行図
  http://hanatyan.sakura.ne.jp/samplepic/chartno24-1.gif
メンテ
3D棒グラフを回転角、上昇角を指定して回転表示(VB6.0)  (No.25の個別表示) [スレッド一覧へ]
日時: 2011/03/28 15:24
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:回転させながら表示,ちらつく,チラツキ,転送,ピクチャーボックスに表示  *
***********************************************************************************

-----------------------------------------------------------------------------------
投稿者:花ちゃん 3D棒グラフを回転角、上昇角を指定して回転表示 2007/07/26
-----------------------------------------------------------------------------------
3D グラフを回転角度、上昇角度変更しながら連続して回転させながら表示させている
尚、クリップボードを使って簡単なチラツキ防止対策を行っております。

チラツキ防止対策については、この掲示板でも紹介しておりますので、ご覧下さい。
 http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view&no=30


'★追加部分
Timer1 コントロールとPicture1 コントロールをフォームに貼り付けておいて下さい。
グラフのタイプを 3D棒グラフにしておいて下さい。

下記をsChartViewSet() プロシージャ内かボタンのイベントにでも追加して下さい。

'------------------- グラフを回転表示する ----------------------
   Timer1.Interval = 500   'お好みの速さで(10 〜 1000)設定して下さい。
   '画面のチラツキ防止の為にPicture に表示
   With Picture1
      .AutoRedraw = True
      .Visible = True
      .Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   End With
'---------------------------------------------------------------

下記コードをそのまま追加して下さい。
Private Sub Timer1_Timer()
'3D棒グラフを回転表示
   'VB5.0 ではエラーが発生
   lngRotation = lngRotation + 10          '回転角度
   lngElevation = lngElevation + 5         '上昇角度
   DoEvents    'キーイベント等の取得の為
   MSChart1.Plot.View3d.Set lngRotation, lngElevation
   DoEvents
   If lngElevation >= 90 Then lngElevation = -30
   If lngRotation >= 360 Then lngRotation = 0
   Dim tmpPic As New StdPicture
   Clipboard.Clear
   DoEvents
   'クリップボードにコピー
   MSChart1.EditCopy
   DoEvents
   'クリップボード内のイメージを読込
   Picture1.Picture = Clipboard.GetData()
End Sub

'下記変数をForm の宣言セクションに記入して下さい。
Private lngRotation   As Long       '回転角度
Private lngElevation  As Long       '上昇角度

-------------------------------------------------------------------
以上の設定で実行すれば、グラフが回転しながら表示されるはずです。


上記の実行図
   http://hanatyan.sakura.ne.jp/samplepic/chartno25-1.gif
メンテ
系列を排除及び系列を非表示及び統計線を色々表示(VB6.0)  (No.26の個別表示) [スレッド一覧へ]
日時: 2007/07/31 08:41
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:最大値線,最小値線,平均値線,標準偏差線,トレンド線,統計線,系列の排除  *
***********************************************************************************

-----------------------------------------------------------------------------------
投稿者:花ちゃん 系列を排除及び系列を非表示及び統計線を色々表示 2007/07/31
-----------------------------------------------------------------------------------

 下記をsChartViewSet() プロシージャ内に追加して下さい。

 '★追加部分

'------------------- 系列を排除/非表示・統計線を表示 --------------------
   '系列 2 を非表示にする
   MSChart1.Plot.SeriesCollection(2).Position.Hidden = True

   '系列 3 を排除する
   MSChart1.Plot.SeriesCollection(3).Position.Excluded = True


   With MSChart1.Plot.SeriesCollection.Item(1).StatLine
      '統計線を設定します。
      '下記の Flag の設定は、1系列に対して1種類しか表示出来ません。
      '(下記の定数の中から1つ選択して下さい)
      
      .Flag = VtChStatsMaximum       '系列の最小値を表示します。
      '.Flag = VtChStatsMinimum      '系列の最小値を表示します。
      '.Flag = VtChStatsMean         '系列中の値の数学的平均を表示します。
      '.Flag = VtChStatsStddev       '系列中の値の標準偏差を表示します。
      '.Flag = VtChStatsRegression   '系列の値が示すトレンド線を表示します。

      '線の種類を決めます。
      .Style(VtChStatsMaximum) = VtPenStyleDashDitDit
      '線の色の自動設定を解除します。
      .VtColor.Automatic = False
      '色を設定します。
      .VtColor.Set 0, 0, 255
      '線の幅を設定します。
      .Width = 50
   End With

'------------------------------------------------------------------------------------

MSChart1 コントロールには、MSChart1 コントロール上の任意の位置に Line を引くような
メソッドやプロパティは用意されておりません。(文字列も同様です。)

MSChart1 コントロール で描画したものをPictureBox上に転送してPictureBox 上で加工する
事なるかと思いますが、それも色々条件が限定されます。

-------------------------------------------------------------------------------------

 上記コードの実行図
 http://hanatyan.sakura.ne.jp/samplepic/Chart026.htm
メンテ
MSChartコントロールで作成したグラフをPictureBoxに転送(VB6.0)  (No.27の個別表示) [スレッド一覧へ]
日時: 2007/08/04 07:07
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:ピクチャーボックス,コピー,ペースト,加工,描画,塗る,こんな事も出来ます*
***********************************************************************************

MSChart コントロールで作成したグラフを PictureBox に転送表示する事によってグラフ上
の任意の位置に文字を書いたり、棒グラフの棒の色を個別に変更する等が可能になります。
又、作成したグラフの保存や印刷も簡単に行う事ができます。

-----------------------------------------------------------------------------------
投稿者:花ちゃん MSChartコントロールで作成したグラフをPictureBoxに転送 2007/07/31
-----------------------------------------------------------------------------------

全てのコードを掲載しておきます。

'--------------------------------------------------------------------------------
' K.J.K. さんが掲示板に投稿されていたコードを使わせてもらっています。(下記参照)
' http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view2&f=30&no=1
'--------------------------------------------------------------------------------

Option Explicit

Private Enum DVASPECT
   DVASPECT_CONTENT = 1
   DVASPECT_THUMBNAIL = 2
   DVASPECT_ICON = 4
   DVASPECT_DOCPRINT = 8
End Enum
Private Type RECT
   Left   As Long
   Top    As Long
   Right  As Long
   Bottom As Long
End Type
Private Declare Function OleDraw Lib "ole32.dll" _
   (ByVal pUnk As Object, ByVal dwAspect As DVASPECT, _
    ByVal hDCDraw As Long, lprcBounds As RECT) As Long


Private Sub Form_Load()
   'フォームのサイズを設定(好みで変更してください)
   Form1.Move 0, 0, 10400, 7000
   'MSChart コントロールの表示サイズを設定
   MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   Picture1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   Call sDataOpen       'データの読み込み
   Call sChartViewSet   'グラフの表示設定
  
   Form1.ScaleMode = vbPixels    'スケールモードをピクセル単位に設定
   'ピクチャーボックスのプロパティの初期設定
   With Picture1
      .ScaleMode = vbPixels      'スケールモードをピクセル単位に設定
      .BorderStyle = 0
      .AutoRedraw = True
      .Visible = True
      .Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   End With
End Sub

Private Sub sChartViewSet()
   With MSChart1
      .chartType = VtChChartType2dBar     'デフォルトのグラフタイプ(2D棒)
      .ShowLegend = True                  '凡例を表示する
   End With
End Sub

Private Sub SetPicture(ctl As Object, myPic As PictureBox)
'OleDraw API を使ってグラフを転送
   Dim udtRect As RECT
   With udtRect
     .Left = 0
     .Top = 0
     .Right = ctl.Width - 1
     .Bottom = ctl.Height - 1
   End With
   With myPic
      .Cls
      .Move 0, 0, ctl.Width, ctl.Height
      Call OleDraw(ctl.Object, DVASPECT_CONTENT, .hdc, udtRect)
   End With
End Sub

Private Sub Form_Resize()
   'フォームのサイズ変更に合わせて MSChart コントロールの表示サイズも変更する
   MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   Picture1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   'フォームのサイズが変更されたら転送しなおす。
   Call SetPicture(MSChart1, Picture1)
   Me.Caption = "OleDraw API を使ってPictureBox にグラフを転送"
End Sub

Private Sub sDataOpen()
'グラフ用のデータを作成及び読み込み
   Dim Dat(0 To 5, 0 To 3) As Variant
   Dat(0, 1) = "国語"
   Dat(0, 2) = "数学"
   Dat(0, 3) = "英語"
  
   Dat(1, 0) = "浅野"
   Dat(1, 1) = 69       '国語の点数
   Dat(1, 2) = 81       '数学の点数
   Dat(1, 3) = 73       '英語の点数
  
   Dat(2, 0) = "安室"
   Dat(2, 1) = 87
   Dat(2, 2) = 80
   Dat(2, 3) = 72
  
   Dat(3, 0) = "加藤"
   Dat(3, 1) = 74
   Dat(3, 2) = 82
   Dat(3, 3) = 96
  
   Dat(4, 0) = "斉藤"
   Dat(4, 1) = 71
   Dat(4, 2) = 69
   Dat(4, 3) = 81
  
   Dat(5, 0) = "鈴木"
   Dat(5, 1) = 84
   Dat(5, 2) = 86
   Dat(5, 3) = 75
  
   'グラフに表示する配列データを設定する
   MSChart1.ChartData = Dat()
End Sub

------------------------------------------------------------------------------
下記の実行図は、上記のコードの実行結果に文字を書いたり、グラフの棒の色を変えたり
しています。(その部分は、ややこしくなるので今回は未掲載)

無論の事ラインも後でピクチャーボックス上で描画しております。
(こんな事も出来ますと言うサンプルでもあります)
 http://hanatyan.sakura.ne.jp/samplepic/chartno27-1.gif

メンテ
ADOを使ってExcelファイルをMSChartコントロールにセットする(VB6.0)  (No.28の個別表示) [スレッド一覧へ]
日時: 2007/08/03 19:22
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][エクセル][]                                              *
* キーワード:ADO,ADODC,データ連結,Recordset,DataSource,エクセルファイル,*.xls    *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  ADOを使ってExcelファイルをMSChartに表示する  2007/08/03
-----------------------------------------------------------------------------------
別途、ADOを使ってCSVファイルをMSChartコントロールにセットする(VB6.0) (No.22) 
>>22  もご覧下さい。


Option Explicit

Private Sub Form_Load()
   Form1.Move 0, 0, 10400, 7000
   MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
  
   Dim CN As New ADODB.Connection, RS As New ADODB.Recordset
   Dim xlFileName As String, SheetNeme As String
   '読み込むExcelファイルのパス
   xlFileName = App.Path & "\Test.xls"
  
   CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & _
                              xlFileName & ";Extended Properties=Excel 8.0;"
   Set RS = New ADODB.Recordset
   'シート[Test]を読み込む
   RS.Open "[Test$]", CN, adOpenStatic, adLockOptimistic
   '※ 一旦先頭(最初)のレコードに移動(これがミソ)
   RS.MoveFirst
  
   Set MSChart1.DataSource = RS        'MSChartにデータを代入
   MSChart1.ShowLegend = True          '凡例を表示
   'Recordset・Connection を閉じる
   RS.Close
   CN.Close
  
   '参照を解放。
   Set RS = Nothing
   Set CN = Nothing
End Sub

----------------------------------------------------------------------------
上記に使用したExcelファイルです。
 http://hanatyan.sakura.ne.jp/samplepic/chartno28-1.gif

上記コードの実行結果の図です。 
 http://hanatyan.sakura.ne.jp/samplepic/chartno28-2.gif
メンテ
データの行と列を入れ替えてグラフを表示する(VB6.0)  (No.29の個別表示) [スレッド一覧へ]
日時: 2007/08/03 19:21
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                     *
* キーワード:行列,行と列,系列の入れ替え                                          *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  データの行と列を入れ替えてグラフを表示する  2007/08/03
-----------------------------------------------------------------------------------

Excel では、系列の入れ替え(系列を行方向、列方向に設定)が簡単にできるのだから
MSChart コントロールでも出来るはずだと思って、プロパティ等を色々調べていたら
やっとの事で見つかりました。
ヘルプの解説では下記のようになっているので、試して見ないと気がつかない。

DataSeriesInRow プロパティ

系列データの読み込み元は、図表と関連するデータ グリッドの行か列かを示す値を設定します。値の取得も可能です。

解れば、単純な事だが、DataSeriesInRow で検索しても国内ではヒットしないところを
見ると、私と同じで気がついた人がいないのかな。


下記をsChartViewSet() プロシージャ内かボタンのイベントにでも追加して下さい。

   MSChart1.ShowLegend = True             '凡例を表示(変更が解り易いように表示)

   MSChart1.Plot.DataSeriesInRow = False  '系列を列方向に定義
   MSChart1.Plot.DataSeriesInRow = True   '系列を行方向に定義

----------------------------------------------------------------------------------
  上記コードの実行図
  http://hanatyan.sakura.ne.jp/samplepic/chartno29-1.gif
メンテ
MSChartコントロールのオブジェクト、プロパティ、メソッド一覧表(VB6.0)  (No.30の個別表示) [スレッド一覧へ]
日時: 2007/08/03 19:50
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                     *
* キーワード:オブジェクト,プロパティ,メソッド,イベント                           *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  オブジェクト、プロパティ、メソッド一覧表  2007/08/03
-----------------------------------------------------------------------------------

オブジェクト、プロパティ、メソッド一覧表
http://hanatyan.sakura.ne.jp/samplepic/chartno30-1.htm

MSChart コントロールのイベント一覧表
http://hanatyan.sakura.ne.jp/samplepic/chartno30-2.htm


この表をコピーしてExce上にペーストして、Excelの機能のフィルターオプションの設定で
検索抽出すれば、逆引きヘルプとして利用でき、簡単に目的のプロパティ等が調べられます。
又、印刷して手元に置いておけば必要時にすぐに調べる事ができ結構便利かと思います。
又、各オブジェクトに関しては大抵ヘルプに使用例が記載されているのでヘルプをご覧下さい。


メンテ
当サイト内で掲載しているMSChart コントロールのサンプル集(VB6.0)  (No.31の個別表示) [スレッド一覧へ]
日時: 2007/08/04 06:22
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][エクセル][]                                              *
* キーワード:サンプル集,Tips,                                                    *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  当サイト内で掲載しているMSChart 関係のサンプル集  2007/08/04
-----------------------------------------------------------------------------------
下記は、当サイト内の[MSChart 関係]で掲載しているサンプル集です。
 http://hanatyan.sakura.ne.jp/vbhlp/MSChartFLM.htm

内容的には重複しているものもありますが、こちらの方をみれば、MSChart 関係の事が
すべて解るようにと掲載しました。

--------------------------------------------------------------------------------------
表示するグラフのタイプを変更・データポイントラベル・凡例・マーカの表示設定(その2)
 http://hanatyan.sakura.ne.jp/vbhlp/mscsono2.htm

タイトル関係・目盛り・表示線・グラフのハッチングを設定する(その3)
 http://hanatyan.sakura.ne.jp/vbhlp/mscsono3.htm

グラフを印刷する(その4)
 1.PrintForm メソッドを使用しての印刷 2.クリップボード経由の印刷
 http://hanatyan.sakura.ne.jp/vbhlp/MSChart02.htm

グラフをモノクロで表示する(その5) 
 http://hanatyan.sakura.ne.jp/vbhlp/MSChart03.htm

3Dグラフの回転表示(その6)
 http://hanatyan.sakura.ne.jp/vbhlp/MSChart04.htm

積み上げ棒グラフで合計のデータポイントラベルを表示
 http://hanatyan.sakura.ne.jp/vbhlp/MSChart05.htm

散布図を表示(プロット表示・ライン表示の2種類) 
 http://hanatyan.sakura.ne.jp/vbhlp/sanpuzu.htm

グラフを点(プロット)だけで表示(折れ線のマーカの設定・折れ線の線の非表示)
(2D折れ線グラフを使って折れ線を非表示設定して、マーカーを表示して実現)
 http://hanatyan.sakura.ne.jp/vbhlp/MSChart10.htm
メンテ
MSChartコントロールで横棒グラフ・吊下げ棒グラフを作成する(VB6.0)  (No.32の個別表示) [スレッド一覧へ]
日時: 2007/08/05 18:08
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:ピクチャーボックス,コピー,ペースト,横置き,こんな事も出来ます    *
***********************************************************************************

>>27 MSChartコントロールで作成したグラフをPictureBoxに転送 の応用編です。
横置き用に文字列等を設定した棒グラフを、PictureBox に転送して、右回りに90度回転させ
たものです。画像の回転は、この掲示板で紹介している、画像を高速に90度毎に回転表示
する方法 を使っておりますので、コードはそちらをご覧下さい。
 http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view2&f=2&no=0

MSChartコントロールの仕様等の制限で、上手く表示設定できない部分もあります。
凡例は、左上に別途、後で、PictureBox に書いて見ました。

又、同じく180度回転させた吊下げ棒グラフも描いてみました。こんな事もできるという事で。

-----------------------------------------------------------------------------------
投稿者:花ちゃん MSChartコントロールで横棒グラフ・吊下げ棒グラフを作成 2007/08/05
-----------------------------------------------------------------------------------

Option Explicit

Private Enum DVASPECT
   DVASPECT_CONTENT = 1
   DVASPECT_THUMBNAIL = 2
   DVASPECT_ICON = 4
   DVASPECT_DOCPRINT = 8
End Enum
Private Type RECT
   Left   As Long
   Top    As Long
   Right  As Long
   Bottom As Long
End Type
Private Declare Function OleDraw Lib "ole32.dll" _
   (ByVal pUnk As Object, ByVal dwAspect As DVASPECT, _
    ByVal hDCDraw As Long, lprcBounds As RECT) As Long

Private Sub Form_Load()
   'フォームのサイズを設定(好みで変更してください)
   Form1.Move 0, 0, 10400, 7000
   'MSChart コントロールの表示サイズを設定
   MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   Picture1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   Call sDataOpen       'データの読み込み
   Me.Visible = False
   Form1.ScaleMode = vbPixels    'スケールモードをピクセル単位に設定
   'ピクチャーボックスのプロパティの初期設定
   With Picture1
      .ScaleMode = vbPixels      'スケールモードをピクセル単位に設定
      .BorderStyle = 0
      .AutoRedraw = True
      .Visible = True
      .Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   End With
   Call sChartViewSet   'グラフの表示設定
   Me.Visible = True
   Me.Show
End Sub

Private Sub sChartViewSet()
   With MSChart1
      .chartType = VtChChartType2dBar      'デフォルトのグラフタイプ(2D棒)
      '凡例の表示位置を設定(下記以外に上手く表示できない)
      .Legend.Location.LocationType = VtChLocationTypeTop
      .Legend.TextLayout.Orientation = VtOrientationUp
      .Legend.VtFont.Name = "@MS P明朝"
      .ShowLegend = True                  '凡例を表示する
   End With
  
   'X軸のラベルの設定
   With MSChart1.Plot.Axis(VtChAxisIdX).Labels(1)
      .Auto = False
      .TextLayout.Orientation = VtOrientationUp
      .VtFont.Size = 14
      .VtFont.VtColor.Set 255, 0, 0
   End With
      
   'Y軸のラベルフォントの設定
   With MSChart1.Plot.Axis(VtChAxisIdY2).Labels(1)
      '左側の 点数の目盛
      .Auto = False
      '下から上へ読めるように回転(文字が綺麗に表示されない)
      .TextLayout.Orientation = VtOrientationUp
      .VtFont.Size = 12
   End With
   '上側の目盛りは非表示に設定
   MSChart1.Plot.Axis(VtChAxisIdY).AxisScale.Hide = True

   'タイトルの設定
   With MSChart1.Title
      'タイトル文字の設定
      .Text = "期末テスト結果"
      '表示位置
      .Location.LocationType = VtChLocationTypeLeft
      .TextLayout.Orientation = VtOrientationUp
      'フォントサイズ
      .VtFont.Size = 16
      'フォントスタイル
      .VtFont.Style = VtFontStyleBold
      'タイトルの文字の表示色
      .VtFont.VtColor.Set 255, 0, 255
   End With
  
   'データポイントラベルの設定
   Dim s As Series
   For Each s In MSChart1.Plot.SeriesCollection
      With s.DataPoints.Item(-1).DataPointLabel
         '表示位置(ラベルはデータ ポイントの上に表示)
         .LocationType = VtChLabelLocationTypeAbovePoint
         'データ ポイントの値がラベルに表示
         .Component = VtChLabelComponentValue
         'フォントサイズとスタイルを設定
         .VtFont.Size = 11
         '下から上へ読めるように回転(文字が綺麗に表示されない)
         .TextLayout.Orientation = VtOrientationUp
'         .VtFont.Style = VtFontStyleBold
         '表示色棒の色と同じ色で
         .VtFont.VtColor.Set _
         s.DataPoints(-1).Brush.FillColor.Red, _
         s.DataPoints(-1).Brush.FillColor.Green, _
         s.DataPoints(-1).Brush.FillColor.Blue
      End With
   Next
End Sub

Private Sub SetPicture(ctl As Object, myPic As PictureBox)
'OleDraw API を使ってグラフを転送
   Dim udtRect As RECT
   With udtRect
     .Left = 0
     .Top = 0
     .Right = ctl.Width - 1
     .Bottom = ctl.Height - 1
   End With
   With myPic
      .Cls
      .Move 0, 0, ctl.Width, ctl.Height
      Call OleDraw(ctl.Object, DVASPECT_CONTENT, .hDC, udtRect)
   End With
  
  
   '画像を高速に90度毎に回転表示する方法
   'http://hanatyan.sakura.ne.jp/patio/read.cgi?mode=view2&f=2&no=0
   '上記サンプルを使って右回りに90度回転
   PicRot90 Picture1
End Sub

Private Sub Form_Resize()
   'フォームのサイズ変更に合わせて MSChart コントロールの表示サイズも変更する
   MSChart1.Move 0, 0, Me.ScaleHeight, Me.ScaleWidth
   Picture1.Move 0, 0, MSChart1.Width, MSChart1.Height

   'フォームのサイズが変更されたら転送しなおす。
   Call SetPicture(MSChart1, Picture1)
   Me.Caption = "MSChartコントロールで横棒グラフを作成する(473)"
  
   '自前の凡例の表示設定
   Dim r As Long, g As Long, b As Long, i As Long
   Shape1.Move 10, 10, 50, 50
   For i = 1 To MSChart1.Plot.SeriesCollection.Count
      r = MSChart1.Plot.SeriesCollection(i).Pen.VtColor.Red
      g = MSChart1.Plot.SeriesCollection(i).Pen.VtColor.Green
      b = MSChart1.Plot.SeriesCollection(i).Pen.VtColor.Blue
      Picture1.Line (15, 15 * i)-(25, 10 + (15 * i)), RGB(r, g, b), BF
      Picture1.CurrentX = 30
      Picture1.CurrentY = 15 * i
      Picture1.Print MSChart1.ChartData(0, i)
   Next i
End Sub

Private Sub sDataOpen()
'グラフ用のデータを作成及び読み込み
   Dim Dat(0 To 5, 0 To 3) As Variant
   Dat(0, 1) = "国語"
   Dat(0, 2) = "数学"
   Dat(0, 3) = "英語"
  
   Dat(1, 0) = "浅野"
   Dat(1, 1) = 69       '国語の点数
   Dat(1, 2) = 81       '数学の点数
   Dat(1, 3) = 73       '英語の点数
  
   Dat(2, 0) = "安室"
   Dat(2, 1) = 87
   Dat(2, 2) = 80
   Dat(2, 3) = 72
  
   Dat(3, 0) = "加藤"
   Dat(3, 1) = 74
   Dat(3, 2) = 82
   Dat(3, 3) = 96
  
   Dat(4, 0) = "斉藤"
   Dat(4, 1) = 71
   Dat(4, 2) = 69
   Dat(4, 3) = 81
  
   Dat(5, 0) = "鈴木"
   Dat(5, 1) = 84
   Dat(5, 2) = 86
   Dat(5, 3) = 75
  
   'グラフに表示する配列データを設定する
   MSChart1.ChartData = Dat()
End Sub

----------------------------------------------------------------------------------
  上記コードの実行図(横棒グラフ)
  http://hanatyan.sakura.ne.jp/samplepic/chartno32-1.gif

  上記コードの実行図(吊下げ棒グラフ)
  http://hanatyan.sakura.ne.jp/samplepic/chartno32-2.gif
メンテ
MSChartコントロールの色々なグラフの表示座標を取得する(VB6.0)  (No.33の個別表示) [スレッド一覧へ]
日時: 2007/08/24 11:43
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:ピクチャーボックス,項目の位置,位置,座標,描画,塗る,こんな事も出来ます*
***********************************************************************************
>>27 MSChartコントロールで作成したグラフをPictureBoxに転送表示する の応用例で今まで
色々掲示板で質問があったのですが、MSChartコントロール 上では出来なくてもPictureBox上
に転送する事により出来るのでここに紹介して置きます。
色々なケースに合せて作成するのは大変なので、今回は、一部決め打ちを行っておりますので
ご使用状況に合せて変更願います。

下記のような場合は、これで解決できるかと思います。

MSChartで補完してプロットする.. - ラトリア 2007/05/23-14:58 No.9211
MSChartの座標値を求めるには - わかば 2007/07/08/21-20:17 No.9938

-----------------------------------------------------------------------------------
投稿者:花ちゃん MSChartコントロールの色々なグラフの表示位置を取得する 2007/08/24
-----------------------------------------------------------------------------------
1.数値軸及び第二数値軸のX座標位置の取得
  これにより各ラベルの間隔・位置等も取得できます。
2.数値軸の目盛りの基点(0 点)の横線のY座標を取得
3.数値軸の目盛りの終点(100 点)の横線のY座標を取得
    (これにより座標位置でのデータの値が取得できグラフの表示位置が求められる)
4.マウス位置の色を取得する事により上記と組み合わせれば、マウス位置のデータの値が
  取得できる


Option Explicit

Private Enum DVASPECT
   DVASPECT_CONTENT = 1
   DVASPECT_THUMBNAIL = 2
   DVASPECT_ICON = 4
   DVASPECT_DOCPRINT = 8
End Enum
Private Type RECT
   Left   As Long
   Top    As Long
   Right  As Long
   Bottom As Long
End Type
Private Declare Function OleDraw Lib "ole32.dll" _
   (ByVal pUnk As Object, ByVal dwAspect As DVASPECT, _
    ByVal hDCDraw As Long, lprcBounds As RECT) As Long

'-----------------------------------------------------------------------------
'ピクセルカラー値を取得する(P489)
Private Declare Function GetPixel Lib "gdi32" _
   (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private LPos()   As Single    'ラベルの表示座標

Private Sub Form_Resize()
   'フォームのサイズ変更に合わせて MSChart コントロールの表示サイズも変更する
   If Me.Visible = False Then Exit Sub
   MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   Picture1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   'フォームのサイズが変更されたら転送しなおす。
   Call SetPicture(MSChart1, Picture1)

   Dim i As Long
   Dim X1 As Single
   Dim X2 As Single
   'X軸の始点のX座標を求める(一番左側の目盛りの縦線)
   For i = 20 To 100
      If GetPixel(Picture1.hdc, i, 50) = 0 Then
         X1 = i
         Exit For
      End If
   Next i
   'X軸の終点のX座標を求める(一番右側の目盛りの縦線)
   For i = Picture1.ScaleWidth - 40 To Picture1.ScaleWidth - 150 Step -1
      If GetPixel(Picture1.hdc, i, 50) = 0 Then
         X2 = i
         Exit For
      End If
   Next i
   '生徒名1人当たりの幅を取得
   Picture1.DrawStyle = 6
   Dim XPos As Single
   XPos = (X2 - X1) / MSChart1.RowCount
   ReDim LPos(MSChart1.RowCount) As Single
   For i = 0 To MSChart1.RowCount
      LPos(i) = X1 + (i * XPos)  '各ラベルの左側の座標位置を取得
   Next i
  
   '目盛りの始点のY座標を求める(グラフの 0点の横ラインの位置)
   Dim MinPos As Long
   For i = Picture1.ScaleHeight - 30 To Picture1.ScaleHeight - 80 Step -1
      If GetPixel(Picture1.hdc, 60, i) = 0 Then
         MinPos = i     '目盛り 0 の位置のY座標
         Exit For
      End If
   Next i
   '目盛りの最大点のY座標を求める(グラフの 100点の横ラインの位置)
   Dim MaxPos As Long
   For i = Picture1.ScaleTop + 10 To Picture1.ScaleTop + 80
      If GetPixel(Picture1.hdc, 60, i) = 0 Then
         MaxPos = i     '目盛り 100 の位置のY座標
         Exit For
      End If
   Next i
  
   'これで縦棒の位置と間隔が求められます。
   Dim co As Long
   Dim b(10) As Long
   Dim n As Long
  
   For i = LPos(0) To LPos(1)
      If co <> GetPixel(Picture1.hdc, i, 370) Then
         b(n) = i - LPos(0) - 1
       '  Debug.Print b(n)
         n = n + 1
      End If
      co = Picture1.Point(i, 370)
   Next i

' 以上の事が解れば個々のグラフの表示位置が計算すれば求められます。
End Sub

Private Sub Picture1_MouseMove(Button As Integer, _
                                Shift As Integer, x As Single, y As Single)
'マウス位置のデータをToolTipTextで表示
   Picture1.ToolTipText = ""
   With MSChart1
      Select Case x
         Case LPos(0) To LPos(1)
            If Picture1.Point(x, y) = RGB(255, 0, 0) Then
               Picture1.ToolTipText = .ChartData(1, 0) & "さんの" & _
                  .ChartData(0, 1) & "の点数は" & _
                  .ChartData(1, 1) & "点です。"
            End If
            If Picture1.Point(x, y) = RGB(0, 255, 0) Then
               Picture1.ToolTipText = .ChartData(1, 0) & "さんの" & _
                  .ChartData(0, 2) & "の点数は" & _
                  .ChartData(1, 2) & "点です。"
            End If
            If Picture1.Point(x, y) = RGB(0, 0, 255) Then
               Picture1.ToolTipText = .ChartData(1, 0) & "さんの" & _
                  .ChartData(0, 3) & "の点数は" & _
                  .ChartData(1, 3) & "点です。"
            End If
         Case LPos(1) To LPos(2)
            If Picture1.Point(x, y) = RGB(255, 0, 0) Then
               Picture1.ToolTipText = .ChartData(2, 0) & "さんの" & _
                  .ChartData(0, 1) & "の点数は" & _
                  .ChartData(2, 1) & "点です。"
            End If
            If Picture1.Point(x, y) = RGB(0, 255, 0) Then
               Picture1.ToolTipText = .ChartData(2, 0) & "さんの" & _
                  .ChartData(0, 2) & "の点数は" & _
                  .ChartData(2, 2) & "点です。"
            End If
            If Picture1.Point(x, y) = RGB(0, 0, 255) Then
               Picture1.ToolTipText = .ChartData(2, 0) & "さんの" & _
                  .ChartData(0, 3) & "の点数は" & _
                  .ChartData(2, 3) & "点です。"
            End If
         Case LPos(2) To LPos(3)
            If Picture1.Point(x, y) = RGB(255, 0, 0) Then
               Picture1.ToolTipText = .ChartData(3, 0) & "さんの" & _
                  .ChartData(0, 1) & "の点数は" & _
                  .ChartData(3, 1) & "点です。"
            End If
            If Picture1.Point(x, y) = RGB(0, 255, 0) Then
               Picture1.ToolTipText = .ChartData(3, 0) & "さんの" & _
                  .ChartData(0, 2) & "の点数は" & _
                  .ChartData(3, 2) & "点です。"
            End If
            If Picture1.Point(x, y) = RGB(0, 0, 255) Then
               Picture1.ToolTipText = .ChartData(3, 0) & "さんの" & _
                  .ChartData(0, 3) & "の点数は" & _
                  .ChartData(3, 3) & "点です。"
            End If
        
         Case LPos(3) To LPos(4)
            If Picture1.Point(x, y) = RGB(255, 0, 0) Then
               Picture1.ToolTipText = .ChartData(4, 0) & "さんの" & _
                  .ChartData(0, 1) & "の点数は" & _
                  .ChartData(4, 1) & "点です。"
            End If
            If Picture1.Point(x, y) = RGB(0, 255, 0) Then
               Picture1.ToolTipText = .ChartData(4, 0) & "さんの" & _
                  .ChartData(0, 2) & "の点数は" & _
                  .ChartData(4, 2) & "点です。"
            End If
            If Picture1.Point(x, y) = RGB(0, 0, 255) Then
               Picture1.ToolTipText = .ChartData(4, 0) & "さんの" & _
                  .ChartData(0, 3) & "の点数は" & _
                  .ChartData(4, 3) & "点です。"
            End If
         Case LPos(4) To LPos(5)
            If Picture1.Point(x, y) = RGB(255, 0, 0) Then
               Picture1.ToolTipText = .ChartData(5, 0) & "さんの" & _
                  .ChartData(0, 1) & "の点数は" & _
                  .ChartData(5, 1) & "点です。"
            End If
            If Picture1.Point(x, y) = RGB(0, 255, 0) Then
               Picture1.ToolTipText = .ChartData(5, 0) & "さんの" & _
                  .ChartData(0, 2) & "の点数は" & _
                  .ChartData(5, 2) & "点です。"
            End If
            If Picture1.Point(x, y) = RGB(0, 0, 255) Then
               Picture1.ToolTipText = .ChartData(5, 0) & "さんの" & _
                  .ChartData(0, 3) & "の点数は" & _
                  .ChartData(5, 3) & "点です。"
            End If
         Case Else
            Picture1.ToolTipText = ""
      End Select
   End With

'---------------------------------------------------------------------
' 折れ線グラフのような場合は下記でもいいかな。
'   With MSChart1
'      Select Case X
'         Case LPos(0) To LPos(1)
'            Picture1.ToolTipText = .ChartData(1, 0) & "さんの" & _
'               .ChartData(0, 1) & "の点数は" & _
'               .ChartData(1, 1) & "点で" & vbCrLf & _
'               .ChartData(0, 2) & "の点数は" & _
'               .ChartData(1, 2) & "点で" & vbCrLf & _
'               .ChartData(0, 3) & "の点数は" & _
'               .ChartData(1, 3) & "点です。"
'--------------------- 以下 省略 --------------------------
End Sub

'----------------- 以下のコードは No.27 のサンプルと同様です -----------------------

Private Sub Form_Load()
   'フォームのサイズを設定(好みで変更してください)
   Me.Visible = False
   Form1.Move 0, 0, 10400, 7000
   'MSChart コントロールの表示サイズを設定
   MSChart1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   Picture1.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   Call sDataOpen       'データの読み込み
   Call sChartViewSet   'グラフの表示設定
  
   Form1.ScaleMode = vbPixels    'スケールモードをピクセル単位に設定
   'ピクチャーボックスのプロパティの初期設定
   With Picture1
      .ScaleMode = vbPixels      'スケールモードをピクセル単位に設定
      .BorderStyle = 0
      .AutoRedraw = True
      .Visible = True
      .Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
   End With
   Me.Visible = True
End Sub
Private Sub sChartViewSet()
   With MSChart1
      .chartType = VtChChartType2dBar     'デフォルトのグラフタイプ(2D棒)
      .ShowLegend = True                  '凡例を表示する
      '背景を塗っておく(この色の部分はクリックしても塗りつぶさない)
      .Backdrop.Fill.Brush.Style = VtBrushStyleSolid
      .Backdrop.Fill.Brush.FillColor.Set 255, 255, 255
   End With
End Sub
Private Sub SetPicture(ctl As Object, myPic As PictureBox)
'OleDraw API を使ってグラフを転送
   Dim udtRect As RECT
   With udtRect
      .Left = 0
      .Top = 0
      .Right = ctl.Width - 1
      .Bottom = ctl.Height - 1
   End With
   With myPic
      .Cls
      .Move 0, 0, ctl.Width, ctl.Height
      Call OleDraw(ctl.Object, DVASPECT_CONTENT, .hdc, udtRect)
   End With
End Sub
Private Sub sDataOpen()
'グラフ用のデータを作成及び読み込み
   Dim Dat(0 To 5, 0 To 3) As Variant
   Dat(0, 1) = "国語"
   Dat(0, 2) = "数学"
   Dat(0, 3) = "英語"
  
   Dat(1, 0) = "浅野"
   Dat(1, 1) = 69       '国語の点数
   Dat(1, 2) = 81       '数学の点数
   Dat(1, 3) = 73       '英語の点数
  
   Dat(2, 0) = "安室"
   Dat(2, 1) = 87
   Dat(2, 2) = 80
   Dat(2, 3) = 72
  
   Dat(3, 0) = "加藤"
   Dat(3, 1) = 74
   Dat(3, 2) = 82
   Dat(3, 3) = 96
  
   Dat(4, 0) = "斉藤"
   Dat(4, 1) = 71
   Dat(4, 2) = 69
   Dat(4, 3) = 81
  
   Dat(5, 0) = "鈴木"
   Dat(5, 1) = 84
   Dat(5, 2) = 86
   Dat(5, 3) = 75
  
   'グラフに表示する配列データを設定する
   MSChart1.ChartData = Dat()
End Sub

----------------------------------------------------------------------------------
上記の実行図です。
 http://hanatyan.sakura.ne.jp/samplepic/chartno33-1.gif
 
メンテ
複合グラフで折れ線を最前面に表示する(VB6.0)  (No.34の個別表示) [スレッド一覧へ]
日時: 2007/09/04 18:25
名前: 花ちゃん

***********************************************************************************
* カテゴリー:[チャート][][]                                                      *
* キーワード:複合グラフ、2次元組合せ,最前面,表示順,重なり                         *
***********************************************************************************
-----------------------------------------------------------------------------------
投稿者:花ちゃん  MSChartで縦棒と折線の複合グラフを表示  2007/09/04
-----------------------------------------------------------------------------------
基本的な設定は、>>13 縦棒と折線の複合グラフを表示(VB6.0) と同じです。

'------------------- 複合グラフの表示設定 ----------------------
   With MSChart1
      'グラフの種類を 2次元組み合わせ を選択
      .chartType = VtChChartType2dCombination
      
      '合計の系列だけを折線で表示
      .Plot.SeriesCollection(4).SeriesType = VtChSeriesType2dLine
      
      '合計の系列だけを第2Y軸で表示
      .Plot.SeriesCollection(4).SecondaryAxis = True


'下記の1行を追加するだけでOKです。
      .Plot.SeriesCollection(4).Position.Order = -1


   End With
  ' 一応これだけの設定で表示できます。
'---------------------------------------------------------------

Order プロパティ
図表内の系列の位置を設定します。値の取得も可能です。
順序の位置が別の系列と一致すると、その系列はスタックされます。

order 整数 (Integer)。位置順序です。

.Order = -1  全ての系列の最前面に表示されます。
.Order = 0   系列2.3の前面で、系列1の背面に表示されます。
.Order = 1   系列3の前面で、系列1.2の背面に表示されます。
.Order = 2〜  全ての系列の背面に表示されます。

メンテ
MSChart コントロール (一部機能が動作不良)(VB6.0)  (No.35の個別表示) [スレッド一覧へ]
日時: 2013/06/21 08:42
名前: VBレスキュー(花ちゃん)

***********************************************************************************
* カテゴリー:[チャート][][]  
* キーワード: , , , , ,  
***********************************************************************************
サイトの改装に伴い、サンプルを見直していたら、一部機能が動作しなくなっております。
又、VB6.0 の IDE が落ちたりもします。
現在調査中ですが、何かご存知の方がおられましたら書き込み願います。
メンテ

Page: 1 |

 投稿フォーム               スレッド一覧へ
題  名 スレッドをトップへソート
名  前
パスワード (記事メンテ時に使用)
投稿キー (投稿時 投稿キー を入力してください)
コメント

   クッキー保存   
スレッド一覧へ