ColumnSeries中每个值的不同颜色

时间:2019-01-15 08:44:49

标签: c# wpf livecharts

我在WPF中使用LiveCharts创建带有列的笛卡尔图。这些值来自一个列表,该列表又填充了数据库中的值。

一切正常,除了我希望每一列都有不同的填充。不管什么颜色,对于每个单独的列只是一个随机的颜色。另外,我不想为每个值创建一个新的序列,因为值太多。

来自类似问题的Mappers方法对我不起作用,因为该示例根据值的高低更改颜色。我想为每个不同的轴标签使用不同的颜色。

这是我创建系列的代码的一部分:

cartesianChart.Series.Add(new ColumnSeries
{
    Title = "Column Chart: ",
    Fill = Brushes.CadetBlue,
    Values = valuesList.AsChartValues(),
    DataLabels = true,
    LabelPoint = point => (point.Y).ToString(),
});

这是图表的样子:

Chart

任何想法都会受到赞赏。

2 个答案:

答案 0 :(得分:0)

尝试DataPoint类:

Deploy Traefik using Helm Chart

答案 1 :(得分:0)

如果在LiveCharts中使用SeriesCollection,它将自动为集合中的每个系列分配不同的颜色。

在此示例中,我从一个项目中摘录了一个片段,该片段添加了多个系列,并有一个单独的List,其中包含所有系列名称。这将循环并将每个系列添加到集合中,并从列表中添加系列数据和系列名称。

实时图表齿轮示例:

SeriesCollection = new LiveCharts.SeriesCollection();

List<GearedValues<long>> seriesList = new List<GearedValues<long>>();

seriesList.Add(Data1.AsGearedValues().WithQuality(Quality.Low));
seriesList.Add(Data2.AsGearedValues().WithQuality(Quality.Low));

for(int i = 0; i < seriesName.Count(); ++i)
{
    SeriesCollection.Add(new GColumnSeries
    {
        Values = seriesList[i],
        Name = seriesName[i],
        Fill = System.Windows.Media.Brushes.Transparent,
        StrokeThickness = 1,
        PointGeometry = null,
        LineSmoothness = 0,
    });
}

标准实时图表示例

SeriesCollection = new LiveCharts.SeriesCollection();

List<ChartValues<long>> seriesList = new List<ChartValues<long>>();

seriesList.Add(Data1);
seriesList.Add(Data2);

for(int i = 0; i < seriesName.Count(); ++i)
{
    SeriesCollection.Add(new ColumnSeries
    {
        Values = seriesList[i],
        Name = seriesName[i],
        Fill = System.Windows.Media.Brushes.Transparent,
        StrokeThickness = 1,
        PointGeometry = null,
        LineSmoothness = 0,
    });
}

SeriesCollection颜色是集合中每个系列的预设颜色,但是可以修改这些默认颜色。