Charts 如何形成垂直条形图?

Charts 如何形成垂直条形图?,charts,xamarin.forms,oxyplot,Charts,Xamarin.forms,Oxyplot,在我的xamarin表单应用程序中,我使用的是Oxyplot条形图,这是我在水平条条件下的工作,如何创建垂直图形?还有其他的条形图插件吗 关键是将ColumnSeries与ColumnItem对象一起使用。这应呈现为具有垂直方向条形图的条形图。如果您创建一个新的ContentPage,并将下面的代码粘贴到其中,您可以看到它正在运行。我在代码示例下面附上了一张图片,详细说明了它在iOS上的外观 public partial class DemoPage : ContentPage { pu

在我的xamarin表单应用程序中,我使用的是Oxyplot条形图,这是我在水平条条件下的工作,如何创建垂直图形?还有其他的条形图插件吗

关键是将
ColumnSeries
ColumnItem
对象一起使用。这应呈现为具有垂直方向条形图的条形图。如果您创建一个新的
ContentPage
,并将下面的代码粘贴到其中,您可以看到它正在运行。我在代码示例下面附上了一张图片,详细说明了它在iOS上的外观

public partial class DemoPage : ContentPage
{
    public DemoPage()
    {
        InitializeComponent();

        var model = new PlotModel { Title = "Cake Type Popularity" };

        // generate a random percentage distribution between the 5
        //cake-types (see axis below)
        var rand = new Random();
        double[] cakePopularity = new double[5];
        for (int i = 0; i < 5; ++i)
        {
            cakePopularity[i] = rand.NextDouble();
        }
        var sum = cakePopularity.Sum();

        var barSeries = new ColumnSeries
        {

            ItemsSource = new List<ColumnItem>(new[]
            {
                new ColumnItem{ Value = (cakePopularity[0] / sum * 100) },
                new ColumnItem{ Value = (cakePopularity[1] / sum * 100) },
                new ColumnItem{ Value = (cakePopularity[2] / sum * 100) },
                new ColumnItem{ Value = (cakePopularity[3] / sum * 100) },
                new ColumnItem{ Value = (cakePopularity[4] / sum * 100) }
            }),
            LabelPlacement = LabelPlacement.Inside,
            LabelFormatString = "{0:.00}%"
        };

        model.Series.Add(barSeries);

        model.Axes.Add(new CategoryAxis
        {
            Position = AxisPosition.Bottom,

            Key = "CakeAxis",
            ItemsSource = new[]
            {
                "A",
                "B",
                "C",
                "D",
                "E"
            }
        });

        var grid = new Grid();

        grid.Children.Add(new PlotView
        {
            Model = model,
            VerticalOptions = LayoutOptions.Center,
            HeightRequest = 200,
            HorizontalOptions = LayoutOptions.Fill,
        });

        Content = grid;
    }
}
public部分类DemoPage:ContentPage
{
公共网页()
{
初始化组件();
var model=new PlotModel{Title=“蛋糕类型流行”};
//在5个变量之间生成一个随机百分比分布
//蛋糕类型(参见下面的轴)
var rand=new Random();
double[]cakePopularity=新的double[5];
对于(int i=0;i<5;++i)
{
cakePopularity[i]=rand.NextDouble();
}
var sum=cakePopularity.sum();
var barSeries=新列系列
{
ItemsSource=新列表(新[]
{
新列项{Value=(cakePopularity[0]/sum*100},
新列项{Value=(cakePopularity[1]/sum*100},
新列项{Value=(cakePopularity[2]/sum*100},
新列项{Value=(cakePopularity[3]/sum*100},
新列项{Value=(cakePopularity[4]/sum*100)}
}),
LabelPlacement=LabelPlacement.Inside,
LabelFormatString=“{0:.00}%”
};
model.Series.Add(barSeries);
模型.轴.添加(新类别轴)
{
位置=轴位置。底部,
Key=“CakeAxis”,
ItemsSource=new[]
{
“A”,
“B”,
“C”,
“D”,
“E”
}
});
var grid=new grid();
grid.Children.Add(新绘图视图
{
模型=模型,
垂直选项=布局选项。中心,
高度请求=200,
水平选项=布局选项。填充,
});
内容=网格;
}
}
这将呈现如下图形:


关键是将
ColumnSeries
ColumnItem
对象一起使用。这应呈现为具有垂直方向条形图的条形图。如果您创建一个新的
ContentPage
,并将下面的代码粘贴到其中,您可以看到它正在运行。我在代码示例下面附上了一张图片,详细说明了它在iOS上的外观

public partial class DemoPage : ContentPage
{
    public DemoPage()
    {
        InitializeComponent();

        var model = new PlotModel { Title = "Cake Type Popularity" };

        // generate a random percentage distribution between the 5
        //cake-types (see axis below)
        var rand = new Random();
        double[] cakePopularity = new double[5];
        for (int i = 0; i < 5; ++i)
        {
            cakePopularity[i] = rand.NextDouble();
        }
        var sum = cakePopularity.Sum();

        var barSeries = new ColumnSeries
        {

            ItemsSource = new List<ColumnItem>(new[]
            {
                new ColumnItem{ Value = (cakePopularity[0] / sum * 100) },
                new ColumnItem{ Value = (cakePopularity[1] / sum * 100) },
                new ColumnItem{ Value = (cakePopularity[2] / sum * 100) },
                new ColumnItem{ Value = (cakePopularity[3] / sum * 100) },
                new ColumnItem{ Value = (cakePopularity[4] / sum * 100) }
            }),
            LabelPlacement = LabelPlacement.Inside,
            LabelFormatString = "{0:.00}%"
        };

        model.Series.Add(barSeries);

        model.Axes.Add(new CategoryAxis
        {
            Position = AxisPosition.Bottom,

            Key = "CakeAxis",
            ItemsSource = new[]
            {
                "A",
                "B",
                "C",
                "D",
                "E"
            }
        });

        var grid = new Grid();

        grid.Children.Add(new PlotView
        {
            Model = model,
            VerticalOptions = LayoutOptions.Center,
            HeightRequest = 200,
            HorizontalOptions = LayoutOptions.Fill,
        });

        Content = grid;
    }
}
public部分类DemoPage:ContentPage
{
公共网页()
{
初始化组件();
var model=new PlotModel{Title=“蛋糕类型流行”};
//在5个变量之间生成一个随机百分比分布
//蛋糕类型(参见下面的轴)
var rand=new Random();
double[]cakePopularity=新的double[5];
对于(int i=0;i<5;++i)
{
cakePopularity[i]=rand.NextDouble();
}
var sum=cakePopularity.sum();
var barSeries=新列系列
{
ItemsSource=新列表(新[]
{
新列项{Value=(cakePopularity[0]/sum*100},
新列项{Value=(cakePopularity[1]/sum*100},
新列项{Value=(cakePopularity[2]/sum*100},
新列项{Value=(cakePopularity[3]/sum*100},
新列项{Value=(cakePopularity[4]/sum*100)}
}),
LabelPlacement=LabelPlacement.Inside,
LabelFormatString=“{0:.00}%”
};
model.Series.Add(barSeries);
模型.轴.添加(新类别轴)
{
位置=轴位置。底部,
Key=“CakeAxis”,
ItemsSource=new[]
{
“A”,
“B”,
“C”,
“D”,
“E”
}
});
var grid=new grid();
grid.Children.Add(新绘图视图
{
模型=模型,
垂直选项=布局选项。中心,
高度请求=200,
水平选项=布局选项。填充,
});
内容=网格;
}
}
这将呈现如下图形:


这可以通过组合杆来实现。Ex A中的3条、B中的3条等?不知道tbh,我认为Oxyplot文档应该能够澄清这一点。我发现了如何使用“IsStacked”属性和/或stackgroup。这可以使用条组合来完成。Ex A中的3条,B中的3条,等等?不知道tbh,我认为Oxyplot文档应该能够澄清这一点。我发现了如何使用“IsStacked”属性和/或stackgroup。