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; }