如何解决具有类别的Oxyplot极图
我想用oxyplot创建一个极坐标图。圆轴不应由整数组成,而应由类别组成。 含义不是情节1 ... 10,而是在情节周围说类别A类别B...。 MagnitudeAxis和AngularAxis都不提供为轴设置“字符串”的可能性。 但是,不能使用CategoryAxis绘制极坐标图,因为它不支持角度。
到目前为止,我的代码:
var plotModel = new PlotModel { Title = "",};
plotModel.PlotType = OxyPlot.PlotType.Polar;
plotModel.Axes.Add(new OxyPlot.Axes.AngleAxis()
{
MajorGridlineStyle = LineStyle.Solid,//MinorGridlineStyle = LineStyle.Dot,MajorStep = 1,CropGridlines = false,StartAngle = 450,EndAngle = 90,Minimum = 0,Maximum = 19
});
plotModel.Axes.Add(new OxyPlot.Axes.MagnitudeAxis()
{
MajorGridlineStyle = LineStyle.Solid,Maximum = 5,MinorStep = 1
});
var newValues = new OxyPlot.Series.LineSeries { Title = "New Values",StrokeThickness = 1 };
int i = 0;
foreach(var dataRow in details)
{
newValues.Points.Add(new DataPoint(dataRow.NewValue,i++)); //instead of i++ I would like to put a string of the object dataRow,but this is not supported...
}
由于缺乏在线示例和文档,这是我最后寻求帮助的希望...
解决方法
在我看来,您需要LabelFormatter属性。下面的代码在该图的外部创建标签“类别A”,“类别B” ...“类别S”。这样做是因为(char)65是'A',(char)66是'B'等。
plotModel.Axes.Add(new OxyPlot.Axes.AngleAxis()
{
MajorGridlineStyle = LineStyle.Solid,MajorStep = 1,CropGridlines = false,StartAngle = 450,EndAngle = 90,Minimum = 0,Maximum = 19,LabelFormatter = d => $"Category {(char)(d+65)}"
});
,
根据Rich N的回答,我自己发现了一个(讨厌的)解决方法:
plotModel.Axes.Add(new OxyPlot.Axes.AngleAxis()
{
MajorGridlineStyle = LineStyle.Solid,//MinorGridlineStyle = LineStyle.Dot,LabelFormatter = d => myCategoryList[Convert.ToInt32(d)] //myCategoryList is a list of strings
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。