OxyPlot:如何使用轴标签格式化程序并显示 Y 标签?
OxyPlot: How to use the axis label formatter and show Y labels?
我正在为我的 Xamarin.iOS 项目使用 Oxyplot 来绘制条形图..
这是我的图表目前的样子
这里不是 x 轴值,而是数字,我想显示太阳、星期一、星期三......
我可以看到 CategoryAxis 有一个名为 LabelFormatter 的方法 returns Func<double, string>
,但我该如何使用它?
还有为什么 Y 轴标签没有显示?
public class MyClass
{
/// <summary>
/// Gets or sets the plot model that is shown in the demo apps.
/// </summary>
/// <value>My model.</value>
public PlotModel MyModel { get; set; }
/// <summary>
/// Initializes a new instance of the <see cref="OxyPlotSample.MyClass"/> class.
/// </summary>
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
是只读的,因此您必须一项一项地添加项目。
我正在为我的 Xamarin.iOS 项目使用 Oxyplot 来绘制条形图..
这是我的图表目前的样子
这里不是 x 轴值,而是数字,我想显示太阳、星期一、星期三......
我可以看到 CategoryAxis 有一个名为 LabelFormatter 的方法 returns Func<double, string>
,但我该如何使用它?
还有为什么 Y 轴标签没有显示?
public class MyClass
{
/// <summary>
/// Gets or sets the plot model that is shown in the demo apps.
/// </summary>
/// <value>My model.</value>
public PlotModel MyModel { get; set; }
/// <summary>
/// Initializes a new instance of the <see cref="OxyPlotSample.MyClass"/> class.
/// </summary>
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
是只读的,因此您必须一项一项地添加项目。