Как отобразить линейный график в Xamarin.Forms, который может отображать подробные всплывающие окна и горизонтальные линии для пороговых значений в IOS и Android?

Как отобразить линейный график в Xamarin.Forms, который может отображать:

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

  2. горизонтальные линии для порогов (аналогично Показать пороговую линию в Flex Chart, но для Xamarin).

Я просмотрел Графики для Xamarin.Forms и пока не нашел именно то, что ищу. Примечание. В настоящее время я использую https://github.com/aloisdeniel/Microcharts.

Должен быть бесплатным, и я предпочитаю открытый исходный код. Если нет возможности сделать это, как сделать собственный рендерер либо поверх MicroCharts (то, что я использую сейчас), либо с нуля? Будет ли SkiaSharp работать для этой цели, поскольку это библиотека/фреймворк для 2D-рисования? Также ДОЛЖЕН работать как на IOS, так и на Android.

СкиаШарп, вероятно, сработает.
FreakyAli 13.02.2019 07:56
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
2 080
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы можете сделать такой обходной путь, выполнив процесс в коде, используя Boxview и настроив запрос высоты. что касается вашего примера, вы можете сделать что-то вроде этого:

<StackLayout>
<BoxView HeightRequest = "1" BackgroundColor = "Red" Margin = "0,-100,0,0"> //Red Line
<StackLayout Orientation = "Horizontal" x:Name = "BarGraph"/>
</StackLayout>

в коде для создания гистограммы:

  1. Создайте массив макета стека, а затем зациклите массив
  2. теперь внутри цикла добавьте представление зеленого поля к каждому массиву стека и добавьте дополнительный красный цвет, если он больше 350. не забудьте установить запрос высоты для каждого окна
  3. Затем добавьте их в StackLayout BarGraph.

а также игра Boxview (красная линия в комментарии) со значением с отрицательным значением, чтобы привести его в соответствие с гистограммой.

Попробуйте Оксиплот https://github.com/oxyplot/oxyplot/

Вот документы http://docs.oxyplot.org/en/latest/models/index.html

Это с открытым исходным кодом. вы можете создать сложный график с этой библиотекой. Надеюсь, поможет.

вот пример с LineSeries.

    var model = new PlotModel("LineSeries") { LegendSymbolLength = 24 };
    var s1 = new LineSeries("Series 1")
    {
        Color = OxyColors.SkyBlue,
        MarkerType = MarkerType.Circle,
        MarkerSize = 6,
        MarkerStroke = OxyColors.White,
        MarkerFill = OxyColors.SkyBlue,
        MarkerStrokeThickness = 1.5
    };
    s1.Points.Add(new DataPoint(0, 10));
    s1.Points.Add(new DataPoint(10, 40));
    s1.Points.Add(new DataPoint(40, 20));
    s1.Points.Add(new DataPoint(60, 30));
    model.Series.Add(s1);

вы можете создать любое количество серий и продолжать добавлять их в model.Series

Документация для xamarin.forms ОЧЕНЬ плохая, и мне не удалось заставить ее что-либо отображать.

Jakar510 18.02.2019 05:22

Даже официальные примеры не работают... Разочаровывает. Я думаю, мне нужно что-то придумать с микрокартами.

Jakar510 18.02.2019 05:30
Ответ принят как подходящий

Steema Teechart .net — единственная работающая библиотека. Кому интересно, перейдите на https://www.steema.com/product/net.

и его документация, хоть и неполная: http://wiki.teechart.net/index.php?title=TeeChart_for_NET

SkiaChart бесплатна, гибка, проста в использовании, и да, она тоже с открытым исходным кодом.

Другие вопросы по теме