いつも参考にさせていただいております。
VB6.0にてMSチャートを使用し、下記のような2D棒グラフを作成したいと思っております。
(等角フォントでご確認のほどお願いします)
--------------------------------------
(点)
100│ │ ■│
│ │ ■ ■│
80│ │ ■ ■ ■│
│ ■ │ ■ ■ ■│
60│ ■ ■ │ ■ ■ ■│
│ ■ ■ │ ■ ■ ■│
40│ ■ ■ │ ■ ■ ■│
│■ ■ ■ │ ■ ■ ■│
20│■ ■ ■ │ ■ ■ ■│
│■ ■ ■ │ ■ ■ ■│
0└──────┼──────┘
国 数 英 │ 国 数 英
鈴木 │ 佐藤
Dim ArrayDat(0 To 1, 0 To 3) As Variant
MSChart1.chartType = VtChChartType2dBar
With MSChart1.Plot.Axis(VtChAxisIdY).ValueScale
.Auto = False
.Maximum = 100
.Minimum = 0
.MajorDivision = 5
.MinorDivision = 2
End With
With MSChart1.Plot.Axis(VtChAxisIdY2).ValueScale
.Auto = False
.Maximum = 100
.Minimum = 0
.MajorDivision = 5
.MinorDivision = 2
End With
ArrayDat(0, 0) = "鈴木"
ArrayDat(0, 1) = 30
ArrayDat(0, 2) = 60
ArrayDat(0, 3) = 70
ArrayDat(1, 0) = "佐藤"
ArrayDat(1, 1) = 90
ArrayDat(1, 2) = 80
ArrayDat(1, 3) = 100
MSChart1.ChartData = ArrayDat()
上記ソースで記述したところ、
100│ │ ■│
│ │ ■ ■│
80│ │ ■ ■ ■│
│ ■ │ ■ ■ ■│
60│ ■ ■ │ ■ ■ ■│
│ ■ ■ │ ■ ■ ■│
40│ ■ ■ │ ■ ■ ■│
│■ ■ ■ │ ■ ■ ■│
20│■ ■ ■ │ ■ ■ ■│
│■ ■ ■ │ ■ ■ ■│
0└──────┼──────┘
鈴木 │ 佐藤
となってしまいます。
それぞれの教科名とY軸の単位(点)の表示方法をご教授願いませんでしょうか?
よろしくお願いします。
お世話になっております。
先ほどの質問ですが、VtChLocationTypeRightで右側に項目を設定することに致しました。
(点)などの単位はラベル等でどうにかやってみようと思います。
新たに疑問が生じたのですが、
With MSChart1
.ColumnCount = 3
.RowCount = 3
.Plot.SeriesCollection(1).LegendText = "A"
.Plot.SeriesCollection(2).LegendText = "B"
.Plot.SeriesCollection(3).LegendText = "C"
.Legend.Location.LocationType = VtChLocationTypeRight
.ShowLegend = True
.chartType = VtChChartType2dCombination
.Plot.SeriesCollection(3).SeriesType = VtChSeriesType2dLine
End With
'軸の設定
With MSChart1.Plot.Axis(VtChAxisIdY).ValueScale
.Auto = False
.Maximum = 100
.Minimum = 0
.MajorDivision = 2
.MinorDivision = 5
End With
'折れ線の設定
With MSChart1.Plot.SeriesCollection(3)
.SeriesMarker.Auto = False
.DataPoints.Item(-1).Marker.Style = VtMarkerStyleFilledCircle
.SeriesMarker.Show = True
End With
このように設定した際に、
折れ線グラフが一番背面へ表示されてしまいます。
一番手前に表示する方法はありませんか?(ZOrderのようなイメージです)
また、VtMarkerStyleFilledCircleで設定した●が無駄に大きいのですが(汗)
サイズ変更等できないものでしょうか?
ご存知の方よろしくお願いします。
http://hanatyan.sakura.ne.jp/patio/patio.cgi?
上記サイトのサンプル投稿用掲示板の[MSChart コントロール ワンポイントテクニック集(VB6.0)]を
ご覧下さい。
VBレスキュー(花ちゃん)様
いつもHPを拝見させていただいております。
上記サイトも目を通しましたが、折れ線グラフを最前面に表示するような
プロパティは探しきれませんでした。
一応、
> .Plot.SeriesCollection(1).LegendText = "A"
> .Plot.SeriesCollection(2).LegendText = "B"
> .Plot.SeriesCollection(3).LegendText = "C"
.SeriesCollection(3)を折れ線グラフとしておりますが、
.SeriesCollection(1)を折れ線グラフとすることで、
最前面に表示することができました(苦肉の策です^^;)
またマーカーのサイズ変更は、【マーカーの表示例(VB6.0)】より
>.DataPoints.Item(-1).Marker.Size = 400
を参考に使用させていただきました。
新たにグラフ表示の値が.Maximumで設定した値の場合
(例えば.Maximum = 100 の場合)、100という値がグラフの裏に隠れてしまうなど
多々問題に直面しますが、制限の多いコントロールということで妥協してます…。
MSChartって普段全く使わないので、プロパティを探すだけで一苦労していますが、
【MSChartコントロールのオブジェクト、プロパティ、メソッド一覧表(VB6.0)】
を活用させていただいております。
参考になるものばかりでとても助かります。
有難うございます。
>上記サイトも目を通しましたが、折れ線グラフを最前面に表示するような
>プロパティは探しきれませんでした。
下記ではだめだったのでしょうか?
MSChart1.Plot.SeriesCollection(3).Position.Order = -1
VBレスキュー花ちゃん様
【MSChartコントロールのオブジェクト、プロパティ、メソッド一覧表(VB6.0)】より
Order プロパティ
---------------
グラフ内の系列の位置を返すか、または設定します。
順序の位置が別の系列と一致すると、その系列はスタックされます。
申し訳ございません。
全てに目を通したつもりだったのですが、見落としていたようです。
Orderプロパティを -1 に設定することで問題なく動作することが出来ました。
インデックスを入れ替える必要なかったですね・・・。
貴重な意見を有難うございました。
ツイート | ![]() |