WedX - журнал о программировании и компьютерных науках

С# wpf Live диаграммы, как автоадаптировать ось с точки зрения значений и меток с кодом позади

У меня есть проект, который нужно разрабатывать в WPF и кодировать только с живыми диаграммами. Идея состоит в том, чтобы иметь график температуры. Ниже вы можете увидеть, что я уже делал, добавляя значения в lineSerie. Я начинаю с добавления значений в серию строк, и когда их больше 120, я удаляю первое:

lineSerie1_Part.Values.Add(new ObservableValue((double)val));
if (lineSerie1_Part.Values.Count >= 120)
        lineSerie1_Part.Values.RemoveAt(0);

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

Теперь у меня две проблемы:


  1. Я хотел бы, чтобы по оси X не было количество добавленных значений, а время, когда была измерена температура (например, 10:03:24 - 10:04:18 - ...). Поэтому я написал небольшую тестовую программу, в которой я установил метки:

    Labels = new[] { "AAA", "BBB", "CCC"};
    cc.AxisX[0].Labels = Labels;
    

и это работает. Тем не менее, я не могу изменить это:

Labels[0] = "DDD";
Labels[1] = "EEE";
Labels[2] = "FFF";      
cc.AxisX[0].Labels = Labels;

не вносит никаких изменений. Кроме того, это правильный способ сделать это? Будет ли способ, когда я добавляю новое значение, это значение уже имеет метку оси X?


  1. Я могу установить максимальную и минимальную температуру в начале (например, 18°-25°),

    chartTemperatures.AxisY.Add(new Axis { MinValue = MinTemp, MaxValue = MaxTemp);
    

но я хотел бы, чтобы график автоматически расширялся, если температура превышает начальные значения (например, 25,5 °).

Спасибо за любую помощь Патрик

18.04.2019

  • cc.AxisX[0].Label[0] = DDD;cc.AxisX[0].Label[1] = EEE;cc.AxisX[0].Label[2] = FFF; 18.04.2019
  • Как я уже сказал выше, я уже делаю это, но это не вносит никаких изменений. Так что, возможно, я не знаю, как его обновить. 18.04.2019
  • Вы этого не делаете. Вы создаете новый массив и пытаетесь заменить старый массив новым массивом. Я фактически меняю значения существующего массива. 18.04.2019
  • На самом деле я попробовал ваш код (кстати, метки не помечены) cc.AxisX[0].Labels[0] = DDD; cc.AxisX[0].Labels[1] = EEE; cc.AxisX[0].Labels[2] = FFF; в событии нажатия кнопки, но без изменений. Тем не менее, нет ли лучшего способа сделать это? Могу ли я добавить новое значение с УЖЕ меткой? 18.04.2019
  • Нет лучшего метода. Вы должны изменить существующий массив, но можете перечислить массив. Если он принял значение (не ошибку), это означает, что элемент управления не перерисовывался, поэтому вы не видите изменения, даже если значение изменилось. 18.04.2019
  • Спасибо, что привели меня к решению! Мне просто нужно добавить новое значение, и оно волшебным образом сработает! Любая идея для другой проблемы? 18.04.2019
  • Автоматическое масштабирование работать не будет. Вам нужно вручную установить мин и макс. Единственное другое решение — установить минимальные и максимальные значения в худшем случае (например, от -40 до + 100), но тогда вы получите меньшее разрешение. 18.04.2019
  • Этого достаточно для меня. Возможно, вы захотите опубликовать это как решение, чтобы я мог его принять. 18.04.2019

Ответы:


1

Как заявил Йдвенг, автоматического метода не существует. Поэтому я должен использовать cc.AxisX[0].Label[0] = "DDD";cc.AxisX[0].Label[1] = "EEE";cc.AxisX[0].Label[2] = " ФФФ"

08.05.2019
Новые материалы

Объяснение документов 02: BERT
BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

Как проанализировать работу вашего классификатора?
Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

Работа с цепями Маркова, часть 4 (Машинное обучение)
Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

Учебные заметки: создание моего первого пакета Node.js
Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


Для любых предложений по сайту: [email protected]