2017-04-20 15 views
1

Winforms C#の標準チャートライブラリを使用して適切なヒストグラムを作成しようとしています。現在、次のように私のヒストグラムになります。Winform Chartingヒストグラム - ビンの最初から最後までバーを描画します。

enter image description here

var dataPointSeries = new System.Windows.Forms.DataVisualization.Charting.Series 
    { 
     Name = chartName, 
     Color = Colors.blue, 
     IsVisibleInLegend = false, 
     ChartType = SeriesChartType.Column, 
     MarkerStyle = MarkerStyle.None, 
     BorderWidth = 1, 
     BorderColor = Color.White 


    }; 
    for (int i = 0; i < data.hDataPoints.Count(); i++) 
    { 
     dataPointSeries.Points.AddXY(Charts.Functions.RoundValue(data.hDataPoints[i].fromBin), data.hDataPoints[i].probability); 
    } 

    chart.Series.Add(dataPointSeries); 
    chart.Series[0]["PointWidth"] = "1"; 

私がいる問題はバーが正しく表示されないです。ヒストグラムの場合、バーは下部ビンから開始し、上部ビンで終了する必要があります。チャートコントロールは、Xデータポイントとして選択したものに応じて、上部または下部のビンの中央にバーを描画します。

これを修正する方法はありますか?

+0

データポイントに500を追加できますか? – Enigmativity

+0

これは良いハックですが、他に何かできることはありますか?理想的には軸上の値は各バーの開始と終了に伴います – user1035217

答えて

1

表示される内容は、デフォルトの自動表示です。

変更したい場合は、X軸に必要な正しい値をコード化する必要があります。

あなたはこの希望のようになります。常に境界で、それのデータポイントの列と半分の間に小さな隙間があること

Axis ax = chart.ChartAreas[0].AxisX; 

ax.Minimum = -500; 
ax.Maximum = 5500; 
ax.Interval = 1000; 
ax.IntervalOffset = -500; 

enter image description here

注意を。..

も縦棒グラフでは、各列(または、複数のグラフの場合、データポイントの各グループ)は、であり、x軸の値は常にになります。それ以外のものは誤解を招く恐れがあります。開始/終了すなわち左右のの辺のには意味がありません!! Columnsは約センター

ヒストグラムを作成する場合は、他にも必要な場合は、Areaタイプのグラフを使用します。あなたは...別のSeriesと原理が明らかになるだろうを追加する想像によってそれに慣れる-intutiveカウンタ

これを見つけて、場合

あなたは本当に、単に設定された値の範囲に列を関連付けする必要があると判断した場合その範囲の中央にそのx値..:

再び
 ax.Interval = 1000; 
     ax.IntervalOffset = 0; 
     ax.Minimum = 0; 
     ax.Maximum = 6000; 
     foreach (DataPoint dp in chart.Series[0].Points) dp.XValue += ax.Interval/2; 

enter image description here

、境界でそれのデータ点列と半分の間の隙間に注意し..

+0

ありがとう – user1035217

関連する問題