MS Chart 中的范围栏
Range bar in MS Chart
我想像 link 那样生成柱状图:
但是,我得到这个错误:
这是我使用的代码:
// AxisY
chart1.ChartAreas.Add(CA);
chart1.ChartAreas[1].AxisY.MajorGrid.Enabled = false;
chart1.ChartAreas[1].AxisY.Interval = 1;
// AxisX
chart1.ChartAreas[1].AxisX.ScrollBar.Enabled = true;
chart1.ChartAreas[1].AxisX.ScaleView.Zoomable = true;
chart1.ChartAreas[1].AxisX.MajorGrid.Enabled = false;
chart1.ChartAreas[1].AxisX.LabelStyle.Format = "yyyy-MM-dd hh:mm:ss";
chart1.ChartAreas[1].AxisX.Interval = 0;
chart1.ChartAreas[1].AxisX.IntervalType = DateTimeIntervalType.Years;
minDate = new DateTime(2016, 01, 01, 00, 00, 00, 000);
maxDate = new DateTime(2016, 12, 01, 00, 00, 00, 000); // or DateTime.Now;
chart1.ChartAreas[1].Axes[0].Enabled = AxisEnabled.False;
chart1.ChartAreas[1].Axes[1].Enabled = AxisEnabled.False;
chart1.ChartAreas[1].BackColor = Color.Transparent;
chart1.ChartAreas[1].Position.Height = 100;
chart1.ChartAreas[1].Position.Width = 100;
chart1.ChartAreas[1].InnerPlotPosition.Height = 90;
chart1.ChartAreas[1].InnerPlotPosition.Width = 80;
chart1.ChartAreas[1].InnerPlotPosition.X = 10;
var series2 = new Series
{
Name = "S2",
Color = Color.Black,
ChartType = SeriesChartType.RangeBar,
YValueType = ChartValueType.Auto,
XValueType = ChartValueType.Auto
};
var values2 = new DateTime[3];
values2[0] = minDate.AddMonths(2);
values2[1] = minDate.AddMonths(4);
values2[2] = minDate.AddMonths(6);
series2.Points.AddXY(1, values2[1], values2[2]);
series2["PointWidth"] = ".25";
chart1.Series.Add(series2);
底轴是日期时间。左轴是固定的,并且有单词作为标签。我需要显示数据差距。
是的,乍一看这很奇怪,错误消息没有为您指明正确的方向。
原因是您在将系列添加到图表之前尝试向系列添加点。
RangeBar
不能与除条形图之外的任何其他图表类型组合。
因此 (?) 图表无法检查点是否以有效方式添加,而是声称您的系列仅接受一个 y 值。
解决方案:只需将 series2
添加到 Chart
之前 添加任何 DataPoints
就可以了..
我想像 link 那样生成柱状图:
但是,我得到这个错误:
这是我使用的代码:
// AxisY
chart1.ChartAreas.Add(CA);
chart1.ChartAreas[1].AxisY.MajorGrid.Enabled = false;
chart1.ChartAreas[1].AxisY.Interval = 1;
// AxisX
chart1.ChartAreas[1].AxisX.ScrollBar.Enabled = true;
chart1.ChartAreas[1].AxisX.ScaleView.Zoomable = true;
chart1.ChartAreas[1].AxisX.MajorGrid.Enabled = false;
chart1.ChartAreas[1].AxisX.LabelStyle.Format = "yyyy-MM-dd hh:mm:ss";
chart1.ChartAreas[1].AxisX.Interval = 0;
chart1.ChartAreas[1].AxisX.IntervalType = DateTimeIntervalType.Years;
minDate = new DateTime(2016, 01, 01, 00, 00, 00, 000);
maxDate = new DateTime(2016, 12, 01, 00, 00, 00, 000); // or DateTime.Now;
chart1.ChartAreas[1].Axes[0].Enabled = AxisEnabled.False;
chart1.ChartAreas[1].Axes[1].Enabled = AxisEnabled.False;
chart1.ChartAreas[1].BackColor = Color.Transparent;
chart1.ChartAreas[1].Position.Height = 100;
chart1.ChartAreas[1].Position.Width = 100;
chart1.ChartAreas[1].InnerPlotPosition.Height = 90;
chart1.ChartAreas[1].InnerPlotPosition.Width = 80;
chart1.ChartAreas[1].InnerPlotPosition.X = 10;
var series2 = new Series
{
Name = "S2",
Color = Color.Black,
ChartType = SeriesChartType.RangeBar,
YValueType = ChartValueType.Auto,
XValueType = ChartValueType.Auto
};
var values2 = new DateTime[3];
values2[0] = minDate.AddMonths(2);
values2[1] = minDate.AddMonths(4);
values2[2] = minDate.AddMonths(6);
series2.Points.AddXY(1, values2[1], values2[2]);
series2["PointWidth"] = ".25";
chart1.Series.Add(series2);
底轴是日期时间。左轴是固定的,并且有单词作为标签。我需要显示数据差距。
是的,乍一看这很奇怪,错误消息没有为您指明正确的方向。
原因是您在将系列添加到图表之前尝试向系列添加点。
RangeBar
不能与除条形图之外的任何其他图表类型组合。
因此 (?) 图表无法检查点是否以有效方式添加,而是声称您的系列仅接受一个 y 值。
解决方案:只需将 series2
添加到 Chart
之前 添加任何 DataPoints
就可以了..