http://msdn.microsoft.com/ja-jp/library/dd456671(v=vs.100)
ここにあるようなローソク足チャートを作りたく、棒グラフのサンプルでトライしたのですが、
何分超素人の悲しさ、どうしても上手く行きません。
申し訳ないのですがお教えいただけないでしょうか。
※ ライブラリの説明では「高値、安値、始値、終値」の順になってますが、
日本では一般的に「始値、高値、安値、終値」の順ですので変更が必要なのかもしれません。
また、右端上に表示されるコメントは不要ですので削除したいです。
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'初期化
Chart1.Series.Clear()
'データの取得
Dim ds As DataSet = GetData()
'Chartコントロールにデータソースを設定
Chart1.DataSource = ds
'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 = columnName
Next
'X軸タイトル
Chart1.ChartAreas(0).AxisX.Title = "年月日"
Chart1.DataBind()
End Sub
' データの設定
Private Function GetData() As DataSet
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"))
ds.Tables.Add(dt)
'株価データ ※実際にはCSVファイルから持ってきます。
dtRow = ds.Tables(0).NewRow
dtRow(0) = "2012/08/01" '日付
dtRow(1) = "500" '始値
dtRow(2) = "800" '高値
dtRow(3) = "200" '安値
dtRow(4) = "300" '終値
ds.Tables(0).Rows.Add(dtRow)
dtRow = ds.Tables(0).NewRow
dtRow(0) = "2012/08/01" '日付
dtRow(1) = "1000" '始値
dtRow(2) = "2300" '高値
dtRow(3) = "400" '安値
dtRow(4) = "800" '終値
ds.Tables(0).Rows.Add(dtRow)
Return (ds)
End Function
Seriesを4つ作成するのではなくて
1つのSeriesを作成し
YValueMembers = "高値, 安値, 始値, 終値"
とすれば良いと思います。
shuさん、
教えて頂いたように変更しましたら上手く行きました。
ありがとうございました。
あと…、
右端上に表示される「高値, 安値, 始値, 終値とその罫線」は不要ですので消したいです。
棒の色は PriceUpColor、PriceUpColor カスタム属性によって決まる、とありますがその書式が分かりません。
よろしくお願いします。
srs.IsVisibleInLegend = False
srs.SetCustomProperty("PriceUpColor", "DarkBlue")
srs.SetCustomProperty("PriceDownColor", "DarkGreen")
srsは対象のSeries
参考URL:
http://msdn.microsoft.com/ja-jp/library/dd456638.aspx
shuさん、ありがとうございます。
解決することが出来ました。
厚く御礼申し上げます
ツイート | ![]() |