OxyPlot:如何使用轴标签格式化器并显示Y标签?
我正在使用Oxyplot为我的Xamarin.iOS项目绘制条形图..
这是我的图表目前看起来喜欢的
这里是x轴值而不是数字,我想显示太阳,mon true,wed …..
我可以看到CategoryAxis有一个名为LabelFormatter的方法,它返回Func
,但我该如何使用它?
还有为什么Y轴标签没有显示???
public class MyClass { /// /// Gets or sets the plot model that is shown in the demo apps. /// /// My model. public PlotModel MyModel { get; set; } /// /// Initializes a new instance of the class. /// public MyClass() { var model = new PlotModel { Title = "ColumnSeries" }; model.PlotAreaBorderColor = OxyColors.Transparent; // A ColumnSeries requires a CategoryAxis on the x-axis. model.Axes.Add(new CategoryAxis() { Position = AxisPosition.Bottom, MinorTickSize = 0, MajorTickSize = 0, //MajorGridlineStyle = LineStyle.Solid, //MinorGridlineStyle = LineStyle.Solid, }); model.Axes.Add(new LinearAxis() { AxislineStyle = LineStyle.None, Position = AxisPosition.Left, MinorTickSize = 0, MajorTickSize = 0, MajorGridlineStyle = LineStyle.Solid, MinorGridlineStyle = LineStyle.Solid, Minimum = 0, Maximum = 400, }); var series = new ColumnSeries(); series.Items.Add(new ColumnItem() { Value = 200, Color = OxyColors.Orange}); series.Items.Add(new ColumnItem(200)); series.Items.Add(new ColumnItem(300)); series.Items.Add(new ColumnItem(100)); series.Items.Add(new ColumnItem(200)); series.Items.Add(new ColumnItem(100)); series.Items.Add(new ColumnItem(130)); model.Series.Add(series); this.MyModel = model; } }
要在轴上显示标签,您必须指定属性MajorStep
,Oxyplot将仅绘制与主要步骤匹配的标签。
model.Axes.Add(new LinearAxis() { MajorStep = 10, Position = AxisPosition.Left, ... });
要使用日期名称修改标签,可以使用DateTimeAxis
而不是LinearAxis
:
model.Axes.Add(new DateTimeAxis() { StringFormat = "ddd", Position = AxisPosition.Bottom, ... });
如果您想要更自定义的内容,则必须使用LabelFormatter
属性。
编辑:
CategoryAxis中的标签:
var categoryAxis = new CategoryAxis() { Position = AxisPosition.Bottom, ... }; categoryAxis.ActualLabels.Add("Mon"); categoryAxis.ActualLabels.Add("Tue"); categoryAxis.ActualLabels.Add("Wed"); categoryAxis.ActualLabels.Add("Thu"); categoryAxis.ActualLabels.Add("Fri"); categoryAxis.ActualLabels.Add("Sat"); categoryAxis.ActualLabels.Add("Sun"); Model.Axes.Add(categoryAxis);
CategoryAxis.ActualLabels
是readOnly,因此您必须逐个添加项目。