ローソク足チャートに折れ線も表示したいのですが上手く行きません。
1、---の部分を追加しますとローソク足が消えてしまいます。
2、Y軸の基点が0になってるのを400など株価に合わせて調整したい。
超初心者です。
よろしくお願いします。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'データの取得
Dim ds As New DataSet
Dim dt As New DataTable
Dim dtRow As DataRow
'列の作成
dt.Columns.Add("日付", Type.GetType("System.String"))
dt.Columns.Add("高値", Type.GetType("System.Int32"))
dt.Columns.Add("安値", Type.GetType("System.Int32"))
dt.Columns.Add("始値", Type.GetType("System.Int32"))
dt.Columns.Add("終値", Type.GetType("System.Int32"))
dt.Columns.Add("指数", Type.GetType("System.Int32"))
ds.Tables.Add(dt)
'データの追加
dtRow = ds.Tables(0).NewRow
dtRow(0) = "2012/08/01" '日付
dtRow(3) = "600" '始値
dtRow(1) = "700" '高値
dtRow(2) = "500" '安値
dtRow(4) = "550" '終値
dtRow(5) = "550" '指数
ds.Tables(0).Rows.Add(dtRow)
dtRow = ds.Tables(0).NewRow
dtRow(0) = "2012/08/2" '日付
dtRow(3) = "850" '始値
dtRow(1) = "1100" '高値
dtRow(2) = "800" '安値
dtRow(4) = "800" '終値
dtRow(5) = "700" '指数
ds.Tables(0).Rows.Add(dtRow)
dtRow = ds.Tables(0).NewRow
dtRow(0) = "2012/08/3" '日付
dtRow(3) = "700" '始値
dtRow(1) = "800" '高値
dtRow(2) = "500" '安値
dtRow(4) = "750" '終値
dtRow(5) = "600" '指数
ds.Tables(0).Rows.Add(dtRow)
'Chartコントロールにデータソースを設定
Chart1.DataSource = ds
'初期化
Chart1.Series.Clear()
'Chartコントロールにタイトルを設定
Chart1.Titles.Add("株価 ローソク足")
'グラフの種類,系列,軸の設定
For I As Integer = 1 To ds.Tables(0).Columns.Count - 1
'列名の取得
Dim columnName As String = ds.Tables(0).Columns(I).ColumnName
'系列の設定
Chart1.Series.Add(columnName)
'グラフの種類(ローソク足チャート )
Chart1.Series(columnName).ChartType = DataVisualization.Charting.SeriesChartType.Candlestick
'X軸
Chart1.Series(columnName).XValueMember = ds.Tables(0).Columns(0).ColumnName.ToString
Chart1.ChartAreas(0).AxisX.MajorGrid.Enabled = False
Chart1.ChartAreas(0).AxisX.MinorGrid.Enabled = False
'Y軸
Chart1.Series(columnName).YValueMembers = "高値, 安値, 始値, 終値"
'凡例の非表示
Chart1.Series(columnName).IsVisibleInLegend = False
'---------------------------
'グラフの種類(折れ線)
Chart1.Series(columnName).ChartType = DataVisualization.Charting.SeriesChartType.Line
'Y軸
Chart1.Series(columnName).YValueMembers = "指数"
'---------------------------
Next
Chart1.DataBind()
End Sub
'初期化 より下まるまる置き換え
以下のような感じでしょうか?
'初期化
Chart1.Series.Clear()
'Chartコントロールにタイトルを設定
Chart1.Titles.Add("株価 ローソク足")
Chart1.ChartAreas(0).AxisX.MajorGrid.Enabled = False
Chart1.ChartAreas(0).AxisX.MinorGrid.Enabled = False
'グラフの種類,系列,軸の設定
Dim rosoku = Chart1.Series.Add("ローソク")
With rosoku
.ChartType = DataVisualization.Charting.SeriesChartType.Candlestick
.XValueMember = "日付"
.YValueMembers = "高値, 安値, 始値, 終値"
.IsVisibleInLegend = False
End With
Dim ore = Chart1.Series.Add("折れ線")
With ore
.ChartType = DataVisualization.Charting.SeriesChartType.Line
.XValueMember = "日付"
.YValueMembers = "指数"
.IsVisibleInLegend = False
End With
Chart1.DataBind()
shuさん、ありがとうございます。
まるまる置き換える必要があるとは、超初心者の私には思いもよらぬことでした。
有り難うございました。
あと、もしも可能でしたら…、
>2、Y軸の基点が0になってるのを400など株価に合わせて調整したい。
Y軸を0からではなく、データの最低値に合わせたいです。
このサンプルPですと、0の位置が400になれば嬉しいです。
Chart1.ChartAreas(0).AxisY2.Minimum = 400
を追加して
ore.YAxisType = DataVisualization.Charting.AxisType.Secondary
とすれば良いです。
Minimum以外を調整したい場合はAxisY2の各プロパティをいじると
良いです。
shuさん、ありがとうございます。
Chart1.ChartAreas(0).AxisY.Minimum = 400
のみの追加で希望通りになりました。
本当にありがとうございました。
ツイート | ![]() |