Сглаживание линий в графиках и точечных диаграммах. Как сгладить график в Matplotlib без потери контурных линий

У меня есть некоторые зазубренные контурные сюжеты, которые мне нужно сгладить. Мне нужно сгладить их, не теряя ни одной из линий контура. Я упомянул эти , но они не совсем предлагают решение моей проблемы. Без какого-либо фильтра мои сюжеты выглядят так:

Вы можете видеть, что внешние контуры очень неровные , и поэтому качество презентации не является. Если я запустил данные через гауссовский фильтр порядка 0 и сигма 2 (т.е. scipy.ndimage.gaussian_filter(z, 2)), он сглаживает графики, но я потеряет внутренние контуры :

Каков наилучший способ сглаживания графика без потери внутренних контуров? Характер данных, с которыми я работаю, заключается в том, что он всегда имеет самые высокие значения вблизи центра. Фильтрация расширяет информацию и устраняет внутренние контуры. Это наиболее важные контуры: контуры представляют собой риск гибели людей, поэтому, как правило, чем выше значение, тем важнее оно.

Я рассмотрел два метода сглаживания контурных линий.

  • Получите каждую координату контурной линии через contour_object.collections.get_paths().vertices и сгладьте/перерисуйте каждый. Это кажется возможным, но неэлегантным, и я не уверен, с чего начать.
  • Примените гауссовский фильтр только к данным, превышающим определенное значение: например, 5 * 10 -6 . Это легко сделать (процитировать массив данных и взять из исходного набора, если значение больше, чем обрезание, и отфильтрованный набор, если это не так), но кажется довольно произвольным и трудно оправдавшимся.

Я хотел бы сделать что-то вроде первого варианта, но это похоже на хак. Каков наилучший способ сгладить эти контурные графики?

1 ответ

Сглаживание данных → потеря данных.

Моя первая реакция: почему вы хотите отображать сглаженные данные? Я редко когда-либо видел презентации данных, в которых сглаживание данных было действительно полезно для понимания последствий данных. Фактически, это то, что Туфте часто критиковали (это не повод, чтобы избежать этого, конечно, но, возможно, для того, чтобы попросить себя придумать больше оправдания, чем обычно).

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

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

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

В принципе, нет никакого способа "сгладить" данные без "потери" данных в некотором смысле, и любой способ сделать это, который не применяется равномерно ко всему набору данных, будет подозрительным.

Добавлено:

Почему бы не сделать фигуру серией из двух сюжетов? Большой сглаженный сюжет, который у вас уже есть (с отсутствием некоторых данных из-за сглаженного дисплея), а затем сюжет в сторону, которая представляет собой только увеличенную версию, содержащую только небольшие очерченные контуры. Это (наряду с соответствующими заголовками и заголовками) привлечет внимание к сглаживанию, так что нет никакого риска, чтобы кто-то не понимал, что сглаженный сюжет - это измененные данные, и позволяет отображать более красивые большие контуры с другой панелью для более уродливого, контуры. Он также добавляет приятное визуальное сочетание сглаженных и необработанных данных, что часто является хорошим эффектом для таких графиков.

Рисунок 20. - Чтобы изменить форму конкретного маркера данных или всех маркеров выделенного ряда, выберите один из вариантов на вкладке Фигура.

Excel не допускает изменения формы маркеров данных в объемных диаграм­мах, содержащих ось рядов.

Варианты 2 и 3, а также 5 и 6 почти аналогичны друг другу. Отличие заключается в том, что при выборе вариантов 3 и 6 маркеры, представляющие меньшие значения в ряду данных, отображаются в виде усеченной фигуры. Например, при выборе варианта 3 короткие маркеры ряда данных появятся в виде усеченных пирамид.

Сглаживание линий в графиках и точечных диаграммах

Excel может применять сглаживание к рядам данных на графиках и точечных диаграммах. Чтобы воспользоваться этой возможностью, выделите ряд дан­ных, который хотите сгладить, и выберите первую команду в меню Формат. Затем на вкладке Вид (Patterns) открывшегося окна диалога Формат ряда данных установите флажок Сглаженная линия (Smoothed Line).

Изменение линий и маркеров в графиках, точечных и лепестковых диаграммах

Чтобы изменить тип, толщину и цвет линии на графике, лепестковой или точечной диаграмме, выделите ряд данных и затем выберите первую команду в меню Формат. После открытия окна диалога Формат ряда данных перейдите на вкладку Вид (Patterns), представленную на рисунке 21. На этой же вкладке можно изменить вид, цвет и размер маркеров или вовсе удалить их из ряда данных.

Рисунок 21. - Для форматирования линий и маркеров установите нужные значения параметров на вкладке Вид.

Отображение в графиках коридоров колебания и полос повышения и понижения

Коридор колебания - это линия, соединяющая минимальное и максимальное значения и наглядно показывающая диапазон, в пределах которого изменяют­ся значения в данной категории. На рисунке 8 показана диаграмма, иллюст­рирующая применение коридора колебания. Коридор колебания может быть показан только на плоских графиках.

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

Чтобы отобразить в диаграмме коридоры колебания или полосы повышения и понижения, выделите любой ряд данных и выберите первую команду в меню Формат. Затем на вкладке Параметры (Options) открывшегося окна диало­га Формат ряда данных (Format Data Series) установите флажок Минимум-максимум (High-Low Lines) или Открытие-закрытие (Up-Down Bars).

При использовании в диаграмме полос повышения и понижения Excel позво­ляет изменять ширину зазора. Этот параметр обычно доступен только для гистограмм и линейчатых диаграмм, но Excel рассматривает график с полоса­ми повышения и понижения как вид гистограммы. При увеличении ширины зазора полосы повышения и понижения становятся уже, а при уменьшении - шире.

Вы можете изменить внешний вид коридоров колебания или полос повышения и понижения. Для этого выделите один (одну) из них и затем выберите первую команду в меню Формат. Excel откроет окно диалога, позволяющее изменять цвет, толщину и тип линии коридоров колебания или цвет, узор и рамку полос повышения и понижения. Для заливки полос повышения и понижения можно даже использовать текстуру или рисунок.

Отображение линий проекций в графиках и диаграммах с областями

Линия проекции - это прямая, которая проходит от точки данных до оси категорий. Линии проекций особенно полезны в диаграммах с областями, содержащих несколько рядов данных, но их можно добавить в любую диа­грамму с областями, в плоский или объемный график. Для этого выделите ряд данных и выберите первую команду в меню Формат. Затем на вкладке Параметры открывшегося окна диалога Формат ряда данных установите флажок Линии проекции (Drop Lines).

Чтобы отформатировать линии проекции для ряда данных, выделите одну из них и затем выберите первую команду в меню Формат.

Отделение секторов круга и кольца

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

Чтобы отделить только конкретный сектор круга или кольца в плоской или объемной диаграмме, щелкните на этом секторе два раза. Первый щелчок выделит ряд данных, а второй - конкретный сектор. После выделения сек­тора перетащите его в сторону от центра.

Форматирование вторичной круговой диаграммы и вторичной гистограммы

Вторичная круговая диаграмма и вторичная гистограмма - это круговая диа­грамма, в которой несколько точек данных отображаются на вспомогательной круговой диаграмме или гистограмме. Вспомогательная диаграмма предостав­ляет более подробную информацию о некоторой части основной диаграммы. Чтобы преобразовать обычную круговую диаграмму во вторичную круговую диаграмму или гистограмму, выделите любую ее часть и затем в меню Диа­грамма выберите команду Тип диаграммы. В правой части галереи видов круго­вой диаграммы вы найдете вторичную круговую диаграмму и вторичную гистограмму.

По умолчанию при построении вспомогательной диаграммы Excel использует два последних значения ряда данных, но допустимы и другие способы разде­ления значений между основной и вспомогательной диаграммами. Для этого выделите ряд данных во вторичной круговой диаграмме или гистограмме и выберите первую команду в меню Формат. После открытия окна диалога Фор­мат ряда данных перейдите на вкладку Параметры, представленную на рисунке 22.

Ряд данных можно разделить по положению (последние n точек данных отойдут к вспомогательной диаграмме), по значению (к вспомогательной диа­грамме отойдут все точки данных, значение которых меньше n), по доле (к вспомогательной диаграмме отойдут все секторы, значение которых составляет меньше n процентов от общей суммы). Кроме того, вы можете выбрать пункт Дополнительно (Custom) в списке Разделение рядов (Split Series By) и затем просто перетащить часть секторов из основной диаграммы во вспомогательную.

Рисунок 22. - Изменение параметров вторичной круговой диаграммы и вторичной гистограммы.

Параметры настройки для вторичной круговой диаграммы и вторичной гисто­граммы одинаковы, и единственным их отличием является форма вспомога­тельной диаграммы. После изменения параметров разделения Excel перерису­ет основную диаграмму и покажет на ней единый сектор, представляющий все точки данных, отображаемые на вспомогательной диаграмме. По умолчанию Excel рисует линии от этого общего сектора ко всей вспомогательной диаграм­ме. Вы можете удалить эти линии, сняв флажок Соединить значения ряда (Series Lines).

Данные, получаемые в процессе экспериментов, как правило, содержат случайные отклонения (погрешности), поэтому построенные по ним графики не являются плавными линиями, они чаще всего имеют вид зубчатых линий, т.е. линий, отличающихся от плавных наличием “выбросов” и “впадин”. Наличие таких выбросов и впадин иногда затрудняет не только визуальное восприятие закономерности изменения данной величины и, соответственно, анализ полученных графиков, но и выбор гипотезы возможного математического описания графика. Поэтому экспериментальные данные в большинстве случаев необходимо сглаживать, используя методы усреднения ординат на основе интерполяционных формул.

Идея, положенная в основу всех методик математического сглаживания графиков, аналогична идее выравнивания пересеченной местности с помощью бульдозера – срезание выступов почвы и перемещение полученного материала в ближайшие ямы.

Все методики сглаживания графиков основаны на использовании нечетного количества ординат (3, 5, 7, ...) и работоспособны только в том случае, когда шаг точек по оси абсцисс одинаков. Самым простым методом сглаживания является метод сглаживания по трем ординатам.

Сглаживание по методу трех ординат выполняется следующим образом. Пусть в результате экспериментов получена зависимость у = f(x), данные сведены в соответствующую таблицу и по ним построен график. В таблице выбираются первые три соседние ординаты, начиная с крайней левой, и они условно обозначаются:

Левая в рассматриваемой тройке ординат (т.е. в данном случае самая первая ордината);

Средняя из выделенных ординат;

Правая в данной тройке ординат.

Сглаженное значение крайней левой ординаты определяется по следующей формуле:

/ 6 (1)

Сглаженное значение второй (средней) ординаты определяется по формуле:

/ 3 (2)

Далее сдвигаются вправо на одну точку и выделяют вторую тройку соседних ординат, в которой та ордината, которая была средней в первой тройке, станет крайней левой в новой тройке ординат. В этой новой тройке ординат определяют сглаженное значение только средней ординаты по формуле (2). Затем сдвигаются на один шаг вправо и получают следующую тройку соседних ординат, в которой средняя ордината предыдущей тройки станет крайней левой, определяют сглаженное значение средней ординаты в полученной новой тройке ординат и так поступают до тех пор, пока в последней тройке соседних ординат в качестве третьей ординаты не окажется крайняя правая ордината.



В последней тройке ординат определяют сглаженное значение средней ординаты по формуле (2), а затем сглаженное значение крайней правой ординаты по формуле:

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

В результате получается сглаженная по ординатам зависимость .

В случае, если исходная зависимость имеет большой разброс точек (большие “выбросы” и “впадины“), то однократного сглаживания может быть недостаточно, и будет необходимо провести еще одно или несколько повторных сглаживаний. В качестве исходных значений ординат при каждом повторном сглаживании следует использовать результаты предыдущего сглаживания.

Методы сглаживания по пяти, семи и большему количеству ординат позволяют получить сглаженный график более быстро, но при этом более сильно искажают вид исходного графика. Из всех известных методов сглаживания метод сглаживания по трем ординатам является самым «нежным» и щадящим.

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

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