Серия столбцов с другим цветом на другом интервале по оси X заполняет одну и ту же серию?

Я пытаюсь реализовать пользовательский интерфейс графика скорости/времени, я использую WPF с шаблоном MVVM и Live-Charts от beto-rodriguez в качестве моей библиотеки графиков. Я использую серию столбцов.

у меня две проблемы: 1) я должен начать серию в середине оси абсцисс, как это сделать? например, если я устанавливаю минимальное значение как 7, график начинает ось x как 7, принимая ее за первую точку, но я хочу, чтобы ось x начиналась с 1, но построение графика должно начинаться с 7.

2) я должен изменить цвет серии при определенном условии, скажем, когда x = 10, я хочу, чтобы он отображался синим, но когда x = 17, я хочу показать ту же серию как розовый только для этого значения во всех точках он должен быть исходного цвета.

Любые указатели?


person tb1110    schedule 02.08.2017    source источник


Ответы (3)


У вас есть несколько вариантов:

Используйте разные серии для каждой точки:

<lvc:CartesianChart>
   <lvc:CartesianChart.Series>
      <lvc:ColumnSeries Fill="Red" />
      <lvc:ColumnSeries Fill="Blue" />

Вы можете установить их с помощью картографа, например: https://lvcharts.net/App/examples/v1/wpf/Point%20State

person bto.rdz    schedule 04.08.2017
comment
пожалуйста, дайте мне знать, если я ошибаюсь, это создаст две разные серии, я хочу, чтобы у меня было две серии для сетевой загрузки и загрузки, показанные в виде графика в реальном времени ... теперь я хочу, чтобы когда мой vpn отключен, цвет обеих серий изменяется в момент, когда vpn отключился, но до этого серия точек должна иметь исходный цвет ... и эти серии должны продолжать двигаться в реальном графике ... серия, которую я должен использовать, это серия столбцов. - person tb1110; 04.08.2017
comment
большое спасибо @bto.rdz, у меня это сработало по этой ссылке :) - person tb1110; 04.08.2017

Привет, я исправил эту проблему с помощью этого кода: в моем случае мне нужен столбец с фактическими данными о часах другого цвета по отношению к другому.

Код позади:

 public Brush DangerBrushFill { get; set; } = new SolidColorBrush(Colors.DarkOrange);
 public Brush DangerBrushStroke { get; set; } = new SolidColorBrush(Colors.Black);
 public CartesianMapper<Double> Mapper { get; set; }
 public ChartValues<double> ChartValues { get; private set; }

        Mapper = Mappers.Xy<Double>()
            .X((item, index) => item)
            .Y((item, index) => index)                
            .Fill((item, index) => 
            (item > 0 && index == DateTime.Now.Hour - 1) ? DangerBrushFill : null)
            .Stroke((item, index) =>
            (item > 0 && index == DateTime.Now.Hour - 1) ? DangerBrushFill : null);

        SeriesCollection = new SeriesCollection
        {
            new RowSeries
            {
                Configuration=Mapper,
                Values = ChartValues,
                StrokeThickness = 3
            }
        };          

Xaml:

 <lvc:CartesianChart    Hoverable="False"                            
                        Series="{Binding SeriesCollection}">

Надеюсь, это поможет вам.

person luka    schedule 03.02.2020

1) Возможно ли, чтобы вы заполнили значения ваших ColumnSeries 0 в начале? Например, значения ColumnSeries будут такими, если вы хотите начать диаграмму с 7: {0, 0, 0, 0, 0, 0, 10, 12, 14, 16}

2) Не могли бы вы привести еще один пример условия? Вы действительно имеете в виду x = 10 или, вероятно, y = 10? Эта проблема связана с вашим вопросом?

person Yvonnila    schedule 02.08.2017
comment
спасибо за ответ, да, я пробовал раньше, он отлично работает, искал любое другое лучшее решение. 2) у меня есть условие, когда интернет отключается, я хочу показать синий цвет по оси x, и когда пользователь снова подключается, он должен показывать розовый цвет, поэтому поэтому указано определенное значение оси x, если я могу изменить цвет ряда в живых графиках. - person tb1110; 03.08.2017
comment
я поднял вопрос на живых диаграммах github, но не получил никакого ответа :) - person tb1110; 03.08.2017
comment
@Yvonnila Вы нашли, как заполнить значения ColumnSeries одно за другим? - person fatihyildizhan; 15.12.2019
comment
@fatihyildizhan Нет, я этого не делал. Извините, что давно не работал с LiveCharts... - person Yvonnila; 10.02.2020