我想在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);
数据不再分组:
就像每个人都有自己的垃圾桶一样,我只想让它们按标签组合。 (每个索引都有一个且只有一个标签。)
有什么想法吗?谢谢!
答案 0 :(得分:4)
使用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;
}