Живые графики Wpf не показывает все метки оси X

Я использую Живые графики wpf чтобы нарисовать некоторые графики. Чтобы сделать каждый столбец разного цвета, я добавляю несколько серий. но он не показывает метки x-axis всех серий. Зачем ?

senderChart.Series = new SeriesCollection();
    int i = 0;
   var ax = new Axis
   {
       Separator = new LiveCharts.Wpf.Separator()
       {
           Step = 1
       },
       Labels = dateValues,
       ShowLabels = true
   };
   senderChart.AxisX.Add(ax);
    foreach (var val in dataValues)
    {
        senderChart.Series.Add(new ColumnSeries
        {
            DataLabels = true,
            Title = dateValues[i],
            Values = new ChartValues<double>{val},
        });
        i++;
    }  

Я также попробовал почти все способы присвоения серий графикам, но все же получил тот же результат.

введите описание изображения здесь

Всего 1 ответ


У вас есть 20 серий, но у каждой из них есть только одна точка данных, поэтому вы получаете только одну метку. Использование только одной серии будет ближе к предполагаемому использованию LiveCharts. Затем вы можете контролировать цвет панели, введя картограф ( дополнительная информация ).

Вот пример:

//create the mapper
var dapperMapper = new CartesianMapper<double>()
    //the data point will be displayed at the position of its index on the X axis
    .X((value, index) => index)
    //the data point will have a Y value of its value (your double) aka the column height
    .Y((value) => value)
    //pass any Func to determine the fill color according to value and index
    //in this case, all columns over 3 height will be pink
    //in your case, you want this to depend on the index
    .Fill((value, index) => (value > 3.0 ? Brushes.HotPink : Brushes.YellowGreen));

//assign the mapper globally (!)
LiveCharts.Charting.For<double>(dapperMapper, SeriesOrientation.Horizontal);

При этом вы можете использовать одну серию с одним значением в месяц. Вы можете сделать так, чтобы ваш Fill Func был примерно таким, где он циклически перебирает 12 цветов:

.Fill((v, i) =>
{
    switch (i % 12)
    {
        case 0: return Brushes.LightBlue; //december
        case 1: return Brushes.LightCoral; //january
        case 2: return Brushes.PaleGoldenrod; //february
        // …you get the idea
        default: return Brushes.Red;
    }
});

Есть идеи?

10000