Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OxyPlot:如何使用axis标签格式化程序并显示Y标签?_C#_Xamarin.ios_Oxyplot - Fatal编程技术网

C# OxyPlot:如何使用axis标签格式化程序并显示Y标签?

C# OxyPlot:如何使用axis标签格式化程序并显示Y标签?,c#,xamarin.ios,oxyplot,C#,Xamarin.ios,Oxyplot,我正在使用Oxyplot为我的Xamarin.iOS项目绘制条形图 这就是我的图表当前的样子 这里的x轴值不是数字,而是sun,mon true,wed 我可以看到CategoryAxis有一个名为LabelFormatter的方法,它返回Func,但是我如何使用它呢 为什么Y轴标签不显示 public class MyClass { /// <summary> /// Gets or sets the plot model that is shown in the

我正在使用Oxyplot为我的Xamarin.iOS项目绘制条形图

这就是我的图表当前的样子

这里的x轴值不是数字,而是sun,mon true,wed

我可以看到CategoryAxis有一个名为LabelFormatter的方法,它返回
Func
,但是我如何使用它呢

为什么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;
    }
}
公共类MyClass
{
/// 
///获取或设置演示应用程序中显示的绘图模型。
/// 
///我的模特。
公共PlotModel MyModel{get;set;}
/// 
///初始化类的新实例。
/// 
公共MyClass()
{
var model=new PlotModel{Title=“ColumnSeries”};
model.PlotAreaBorderColor=OxyColor.Transparent;
//ColumnSeries需要x轴上的CategoryAxis。
model.Axes.Add(新的CategoryAxis()
{
位置=轴位置。底部,
MinorTickSize=0,
MajorTickSize=0,
//MajorGridlineStyle=LineStyle.Solid,
//MinorGridlineStyle=线型。实心,
});
model.axis.Add(新的LinearAxis()
{
AxislineStyle=线型。无,
位置=轴位置。左,
MinorTickSize=0,
MajorTickSize=0,
MajorGridlineStyle=LineStyle.Solid,
MinorGridlineStyle=线型。实心,
最小值=0,
最大值=400,
});
var系列=新的ColumnSeries();
添加(新的ColumnItem(){Value=200,Color=OxyColors.Orange});
增加(新列项目(200));
增加(新列项目(300));
增加(新列项目(100));
增加(新列项目(200));
增加(新列项目(100));
增加(新列项目(130));
model.Series.Add(系列);
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
属性

编辑:

类别Axis中的标签:

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
是只读的,因此您必须逐个添加项目。

但是,要绘制列系列,我不需要添加CategoryAxis()作为X轴吗?我已经编辑了答案,我想这就是您想要实现的。谢谢。这很有效。我想你是我问题的第二部分。。以显示y级别-_-目前,Y值0显示,下一个Y值是500,只有当我向上滚动时才能看到。。如何显示每条网格线上的Y值???是否指定了主步长=100?因为我试过了,而且很有效。也许我不理解你的问题,你能再具体一点吗?