あなたがSplineAreas
の円滑な外観を好きなら、あなたはちょうどそれを見得るために必要な値を計算することができます
いくつかの注意事項:
- Iをシリーズの順序を逆転させた。色権利を取得するには多くの方法...(その代わり1は、おそらく逆に蓄積する必要があります)
- いつものように、を整列すると、空のあらゆる
DataPoints
が自分Y-Values
は0
する必要があります積み重ねDataPoints
必要。
- 新しいシリーズではもちろん、実際のデータ値にアクセスすることはできません。少なくともキャリブレーションを元に戻すことはできません。だから、もし彼らがどこかでそれらを保つ必要があるなら。新しい
DataPoints' Tag
プロパティは、あなたがそのLineTension
カスタム属性を設定することにより、各Series
の「滑らかさ」を制御することができます一つの選択肢...
- である:ここでは
chart2.Series[0].SetCustomProperty("LineTension", "0.15");
はその完全なサンプルコードです上記のスクリーンショットを作成して、StackedArea chart1
のデータから「積み重ねた」SplineArea chart2
を計算します。
// preparation
for (int i = 0; i < 4; i++)
{
Series s = chart1.Series.Add("S" + i);
s.ChartType = SeriesChartType.StackedArea;
Series s2 = chart2.Series.Add("S" + i);
s2.ChartType = SeriesChartType.SplineArea;
}
for (int i = 0; i < 30; i++) // some test data
{
chart1.Series[0].Points.AddXY(i, Math.Abs(Math.Sin(i/8f)));
chart1.Series[1].Points.AddXY(i, Math.Abs(Math.Sin(i/4f)));
chart1.Series[2].Points.AddXY(i, Math.Abs(Math.Sin(i/1f)));
chart1.Series[3].Points.AddXY(i, Math.Abs(Math.Sin(i/0.5f)));
}
// the actual calculations:
int sCount = chart1.Series.Count;
for (int i = 0; i < chart1.Series[0].Points.Count ; i++)
{
double v = chart1.Series[0].Points[i].YValues[0];
chart2.Series[sCount - 1].Points.AddXY(i, v);
for (int j = 1; j < sCount; j++)
{
v += chart1.Series[j].Points[i].YValues[0];
chart2.Series[sCount - j - 1].Points.AddXY(i, v);
}
}
// optionally control the tension:
chart2.Series[0].SetCustomProperty("LineTension", "0.15");
出典
2016-08-10 17:01:23
TaW
'SplineArea'チャートタイプを試してください。 – jsanalytics
尖ったエッジを取り除きたい場合は、データポイントと所有者を計算することができます。曲線と線で構成された塗りつぶし塗りとして領域を描画します。 [Here](http://stackoverflow.com/questions/38175238/stackedbar-borders-between-different-series/38261691?s=1|0.3676#38261691)は積み上げ座標を計算する例です。 – TaW
@jstreet、残念なことにこれは積み重ねられたグラフではありませんが、結果は素晴らしいものでした。提案に感謝します。 – Adrian