1

Microsoft System.Web.UI.DataVisualization.Charting.Chart を 3 つのシリーズ (2 つの列とオーバーレイ ライン) でプロットしています。y 軸の上限は、グラフに追加された最初の系列のデータ範囲に基づいて自動計算されているようです。その後、その y 値が最初のシリーズの y 値より大きい場合、どのシリーズもレンダリングされません。この例では、シリーズの最大値を使用したいと思います。

シリーズは、一般的な方法でチャートに追加されます。

foreach (var s in model.Series)
            {
                var chartSeries = new Series(s.Title);

                chartSeries.ChartType = s.Type;
                chartSeries.Color = s.DrawColour;

                // add the data to the series
                foreach (DataRow row in data.Tables[0].Rows)
                {
                    chartSeries.Points.AddXY(row[model.XAxis.DataColumnName], row[s.ColumnName]);
                }
                // does the series name come from a column? if not use the plain text. if the column has a caption use it, otherwise the column name.
                chartSeries.Name = data.Tables[0].Columns.Contains(s.Title) ? String.IsNullOrEmpty(data.Tables[0].Columns[s.Title].Caption) ? data.Tables[0].Columns[s.Title].Caption : data.Tables[0].Columns[s.Title].ColumnName : s.Title;

                chart.Series.Add(chartSeries);
            }

シリーズがチャートに追加される順序を逆にすると、プロット エリアは正しくなりますが、ライン シリーズは列の後ろに配置されます。

何か案は?ありがとう。

4

1 に答える 1

0

シリーズを追加する単一のチャート領域があると思いますか?その場合、そのグラフ エリアに属する Y 軸の最大値を変更できます。次のようになります。

// put this block above your foreach loop
double maxval = 100; // <-- put your maximum value here.
chart.ChartAreas[0].AxisY.Maximum = maxval;

LINQ を使用すると、すべてのシリーズ内の最大値を簡単に見つけて、その発見した最大値を AxisY.Maximum として設定できます。

于 2013-08-13T17:28:18.250 に答える