我正在使用MicroCharts barChart
<forms:ChartView x:Name="chart1" HeightRequest="150">
我从Api读取了一个数据列表。我需要显示按参数year(我从列表中的每个对象读取)分组的数据,并且每年要显示3个值。类似于此示例:
private PlotView _opv = new PlotView();
MessagingCenter.Subscribe<Object, BindingList<Summary>>(this, "Sum", (args, list) =>
{
var plotModel = new PlotModel { Title = "OxyPlot Demo" };
CategoryAxis xaxis = new CategoryAxis();
xaxis.Position = OxyPlot.Axes.AxisPosition.Bottom;
xaxis.MajorGridlineStyle = LineStyle.Solid;
xaxis.MinorGridlineStyle = LineStyle.Dot;
foreach (var el in list)
{
xaxis.Labels.Add(el.Year);
ColumnSeries s = new ColumnSeries();
s.IsStacked = false;
s.Items.Add(new ColumnItem((double)el.Plus));
s.Items.Add(new ColumnItem((double)el.Minus));
s.Items.Add(new ColumnItem((double)el.Sum));
plotModel.Series.Add(s);
s.ClearSelection();
}
plotModel.Axes.Add(xaxis);
plotModel.Axes.Add(new LinearAxis { Position = OxyPlot.Axes.AxisPosition.Left, Minimum = 0, Maximum = 10000000 });
_opv.Model = plotModel;
});
Content = _opv;
这是我的代码,但未显示真实数据有什么建议吗?
如果要达到上述效果,可以考虑使用 OxyPlot.Xamarin.Forms
在您的MainActivity
初始化之后Xamarin.Forms.Forms.Init
:
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
OxyPlot.Xamarin.Forms.Platform.Android.PlotViewRenderer.Init();
在您的page.xam.cs中:
public class BarChar : ContentPage
{
private PlotView _opv = new PlotView();
public BarChar()
{
var plotModel = new PlotModel { Title = "OxyPlot Demo" };
CategoryAxis xaxis = new CategoryAxis();
xaxis.Position = AxisPosition.Bottom;
xaxis.MajorGridlineStyle = LineStyle.Solid;
xaxis.MinorGridlineStyle = LineStyle.Dot;
xaxis.Labels.Add("2/2010");
xaxis.Labels.Add("2/2011");
xaxis.Labels.Add("2/2012");
xaxis.Labels.Add("2/2013");
ColumnSeries s1 = new ColumnSeries();
s1.IsStacked = false;
s1.Items.Add(new ColumnItem(1.2));
s1.Items.Add(new ColumnItem(1.6));
s1.Items.Add(new ColumnItem(1.4));
s1.Items.Add(new ColumnItem(1.5));
ColumnSeries s2 = new ColumnSeries();
s2.IsStacked = false;
s2.Items.Add(new ColumnItem(1.5));
s2.Items.Add(new ColumnItem(1.6));
s2.Items.Add(new ColumnItem(1.1));
s2.Items.Add(new ColumnItem(1.2));
ColumnSeries s3 = new ColumnSeries();
s3.IsStacked = false;
s3.Items.Add(new ColumnItem(1.2));
s3.Items.Add(new ColumnItem(1.3));
s3.Items.Add(new ColumnItem(1.4));
s3.Items.Add(new ColumnItem(1.5));
ColumnSeries s4 = new ColumnSeries();
s4.IsStacked = false;
s4.Items.Add(new ColumnItem(1.5));
s4.Items.Add(new ColumnItem(1.4));
s4.Items.Add(new ColumnItem(1.3));
s4.Items.Add(new ColumnItem(1.2));
plotModel.Series.Add(s1);
plotModel.Series.Add(s2);
plotModel.Series.Add(s3);
plotModel.Series.Add(s4);
plotModel.Axes.Add(xaxis);
plotModel.Axes.Add(new LinearAxis { Position = AxisPosition.Left, Minimum = 0, Maximum = 1.6 });
_opv.Model = plotModel;
Content = _opv;
}
}
我认为这仅适用于android吗?
@VaskoJosifovski它也适用于ios,您需要
OxyPlot.Xamarin.Forms.Platform.iOS.PlotViewRenderer.Init();
在ios项目中调用,您可以阅读文档你可以打开聊天问些什么吗
我编辑我的问题
@VaskoJosifovskic您是否在Messenger中获得正确的数据