MSChart:如何使用文本标签而不是索引对RangeBar数据进行分组?

我想在RangeBar图表区域上绘制数据(System.Windows.Forms.DataVisualization.Charting),当我在垂直轴上有标签的文本值时,我遇到了分组数据的问题。

这是相关的代码:

var connectedTimeRangeSeries = theChart.Series.Add("ConnectedTimeRangeSeries"); var connectedTimeRangesChartArea = theChart.ChartAreas["PerItemConnectedChartArea"]; connectedTimeRangeSeries.ChartArea = connectedTimeRangesChartArea.Name; connectedTimeRangeSeries.ChartType = SeriesChartType.RangeBar; connectedTimeRangeSeries.XValueType = ChartValueType.Auto; connectedTimeRangeSeries.YValueType = ChartValueType.Auto; for (int i = 0; i < timeRanges.Count; i++) { string theLabel = timeRanges[i].ItemLabel; connectedTimeRangeSeries.Points.AddXY(timeRanges[i].ItemId + 1, timeRanges[i].StartConnectionTime, timeRanges[i].StopConnectionTime); } 

timeRanges是一个列表,其中包含具有这些成员类型的项目(通过具有相应大写名称的公共属性访问):

 private int itemId; private string itemLabel; private DateTime startConnectionTime; private DateTime stopConnectionTime; 

当我将X类型作为整数调用DataSeries.Points.AddXY()时(调用X是范围栏上的垂直轴),它可以完成我想要的操作。 时间范围根据底部图表中的索引进行分组:

好图表

但是,当我更改为尝试使用文本标签对它们进行分组时,通过将AddXY替换为:

 connectedTimeRangeSeries.Points.AddXY(theLabel, timeRanges[i].StartConnectionTime, timeRanges[i].StopConnectionTime); 

数据不再分组:

在此处输入图像描述

这就像每个人都有自己的垃圾箱,我只想让它们按标签组合。 (每个索引都有一个且只有一个标签。)

有任何想法吗? 谢谢!

使用DataPoint的AxisLabel属性。 一种方法是这样的:

 for (int i = 0; i < timeRanges.Count; i++) { string theLabel = timeRanges[i].ItemLabel; int pointIndex = connectedTimeRangeSeries.Points.AddXY(timeRanges[i].ItemId + 1, timeRanges[i].StartConnectionTime, timeRanges[i].StopConnectionTime); connectedTimeRangeSeries.Points[pointIndex].AxisLabel = theLabel; }