Данные графика со стандартными диапазонами отклонения в C#

Примеры Нарисуйте нормальную кривую распределения в C# и Нарисуйте масштабированное нормальное распределение на C# , покажите один подход для визуализации распределения данных. В этом примере показан метод, который позволяет визуализировать, где конкретное значение данных находится в последовательности наборов данных.

В этом примере используется другой набор данных для каждого из возрастов с 6 по 13. (Вы можете использовать другие виды данных, такие как продажи в течение нескольких лет, дорожные сбои в течение нескольких лет, количество тестов по сравнению с часами обучения и т. д. .) Черная линия, проходящая через график, показывает средства для разных наборов данных. Цветные полосы показывают 0,5, 1,5 и 2,5 стандартных отклонения от средств.

Следующий код показывает, как пример инициализирует свои данные.

Этот код просто создает массивы для хранения средних и стандартных отклонений для каждого возраста. Затем он создает массив тестовых точек для построения графика на графике.

Метод DrawGraph примера рисует график. Это довольно долго, так что это показано здесь по частям. Вот первая часть:

Этот код вычисляет минимальные и максимальные значения, которые программа должна отображать. Для этого он проходит через средства и добавляет и вычитает в 2,5 раза стандартное отклонение для каждого.

После нахождения самых больших и наименьших значений, код создает RectangleF, представляющий мировые координаты, которые он будет строить. (Минимальные и максимальные координаты X и Y необходимо будет рисовать.) Он создает массив PointF, чтобы определить, где должны быть отображены верхние левые, верхние правые и нижние левые углы координат мира чтобы правильно отображаться на PictureBox. Затем он использует RectangleF и массив PointF для создания преобразования для выполнения этого сопоставления.

Следующий фрагмент кода рисует базовый граф.

Этот код создает Bitmap для соответствия PictureBox, а затем создает связанный объект Graphics.

Затем он создает Pen с толщиной 0. Когда вы рисуете с помощью Pen с толщиной 0, библиотека рисования GDI + рисует ширину линии 1, даже если линии линии трансформируются. Если вы используете линию с другой толщиной, преобразование также относится к ширине линии, поэтому вы получаете искаженные линии. В этом примере весь график покрывается линиями. (Установите толщину на 1 и убедитесь сами.)

Код устанавливает свойство Graphics объекта SmoothingMode для создания плавных линий. Затем он устанавливает свойство Transform, чтобы строки отображались из мировых координат в систему координат Bitmap.

Далее код создает серию кистей и передает их и соответствующим образом окрашивает Pen в метод DrawEnvelope, чтобы нарисовать полосы, показывающие кратные стандартным отклонениям. (Этот метод описан ниже).

Этот фрагмент кода завершен путем рисования кривой, соединяющей средства.

Следующий фрагмент кода рисует ось X.

Этот код создает объекты Font и StringFormat для использования при рисовании текста. Затем он рисует линию оси X и отметки.

Чтобы пометить метки, код создает два списка, один из которых содержит место размещения каждой метки и текст ярлыка. Он преобразует список точек в массив и использует метод transform объекта transform для сопоставления точек из мировых координат с системой координат Bitmap.

Далее код сбрасывает свойство Transform объекта Graphics объекта в новую Matrix, которая представляет преобразование идентичности. Это не позволяет преобразованию применить текст ярлыка и исказить символы.

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

Код, который рисует ось Y, подобен, поэтому он не показан здесь.

Следующий код показывает последнюю часть метода DrawGraph.

Этот код просто разбивает точки тестовых данных.

В следующем коде показан метод DrawEnvelope, который рисует одну из затененных областей на графике.

Этот метод создает список объектов PointF. Затем он перебирает точки добавления данных в список. Сначала он идет слева направо, добавляя средние значения плюс кратное их стандартным отклонениям, чтобы получить координаты Y вдоль вершины области, которую он рисует. Затем метод идет слева направо, вычитая кратное их стандартным отклонениям от средних значений, чтобы получить координаты Y вдоль нижней части области.

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

Источник: http://csharphelper.com/blog/2015/09/plot-data-with-standard-deviation-ranges-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)

Add a Comment

Ваш e-mail не будет опубликован. Обязательные поля помечены *