Удобный контрол для графики WPF

Здравствуйте. Может кто нибудь посоветовать какой нибудь удобный и желательно бесплатный контрол для отображения графиков??
WPF вроде и позволяет применить штатный чарт, но это какое то убийство с его наладкой. Отрисовывается он дико. С другими компонентами в таблице он не взаимодействует. Поверх него невозможно ничего отобразить.

Задача простая. Отображать некий процесс и построить 2 графика на двух панелях. Две панели должны быть синхронизированы между собой.

Так “для графики” или “для графиков”?)


хз, я WPF давно не использовал, тут есть список:
https://stackoverflow.com/a/4227432/964478

Это как?

Невозможно поверх него разместить кнопки например. Он в любом случае рисуется всегда поверх.

Из WinForms?

Это проблема WindowsFormsHost.
Вроде бы можно как-то решить костылями:

Но конечно думаю лучше не париться с этим и взять какой-нибудь контрол для WPF по ссылке выше.

В общем опробовал список и как то не особо радостно:

OxyPlot - Не запустился. Требует какие то библиотеки import. Не стал ковыряться. ((

DynamicDataDisplay - Вроде лучший выбор. Красиво рисует, но при сдвиге графика по оси Х сама ось почему то плывет не соответствуя графику. Была точка в координатах 0,0, подвигал ось и видно что координата стала почему то 10,0 или 15,0 там от положения мыши зависит … не гут.
Ну и в режиме 64 почему то перестала отображаться сетка в Design режиме. Вроде бы фигня но все равно неудобно.

Live Charts - это гипернавороченный контрол. Невероятно огромный функционал который не так то просто сходу охватить. Хотя вроде как возможности хорошие. Но почему то тоже не отображается в Design Debug хотя в релизе вроде показывает. Что за магия то?

И все равно так и не понял как сделать два поля синхронизированных по X в Live Chart. Может кто знает?

Я создал чистый WPF проект, добавил OxyPlot.Wpf через NuGet и у меня работает этот пример.

Только если .NET 4.0 (раз нужен XP, то видимо он), то OxyPlot 2.0 уже не поддерживает его, надо 1.0 выбрать.

image

Я не через nuget пытался. Потому как наверняка придется кустарить чтото внутри либы как правило.
Так и к тому же мне нужно в свой проект встроить и надо чтобы там видно было при создании.
Может где то я чтото в проекте своем не включил или чего…

Получится на оксиплоте сделать чтото похожее?

image

Я пока ковыряю Live но как то уж слишком замороченно … (( я прям расстроен

В таких случаях можно просто добавить какой-то свой источник в NuGet конфиг проекта и брать измененную библиотеку оттуда. Не знаю как там это в NuGet делается (кроме указания локальной папки), в других языках обычно не сложно, бывает можно даже просто Git репозиторий указать.

NuGet (и другие системы управления зависимостями) многое упрощают, лучше использовать их всегда.

Наверно OxyPlot.Core не было.

Такая линия не думаю, что где-то легко делается, надо разбираться, может быть просто отдельно самому рисовать её как-нибудь поверх.

А поподробнее?? То есть я могу свою папку добавить в чужой проект чтоли??

А вот ошибка окси

я не запускал их проект, хз что там и для какой VS, только скопировал код MainViewModel.cs, MainWindow.xaml.

Папка это если только на своем компе (ну или например папка в локальной сети).
Обычно зависимости берутся с сервера, своего или стандартного. + еще во многих подобных системах в других языках можно брать просто из Git, но в .NET это вряд ли легко потому что надо собрать nupkg файл, хотя Paket вроде бы умеет.

Основные преимущества использования NuGet и аналогов:

  • Не надо самому качать и добавлять все зависимости (библиотеки) и зависимости зависимостей нужных версий в проект.
  • Легко обновлять, не надо вспоминать что где добавлял, разбираться что заменить.
  • Проверки совместимости (с другими библиотеками, версиями .NET, …).
  • Не надо хранить библиотеки в проекте, не добавляются мегабайты к весу Git репозитория с каждым обновлением библиотек.
  • При разворачивании на новом компе разработчику не надо самому качать, переподключать библиотеки (например, если они лежали не в папке проекта у первого разработчика), NuGet всё сам поставит, всё автоматически, сложнее ошибиться или забыть как и что делать.

Жесть … LiveChart как то невероятно долго добавляет точки в график.
Даже WindowsForms контроль заливал их куда более оперативно.
В итоге прога повисла и пришлось ее снимать … (((

Что же это за проблема то такая…

А есть где нибудь толковый мануал по окси?? Как там изменить графику точки?

Данные в модели задаются, после изменения вроде надо вызвать Invalidate, само не обновит.
https://oxyplot.readthedocs.io/en/latest/common-tasks/refresh-plot.html