Сглаживание линейных графиков Zedgraph без неровностей

StackOverflow https://stackoverflow.com/questions/60542

  •  09-06-2019
  •  | 
  •  

Вопрос

Когда вы используете Zedgraph для линейных графиков и устанавливаете для IsSmooth значение true, линии красиво изогнуты, а не имеют резких углов.

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

В большинстве случаев, если точки данных сами по себе гладкие, это не проблема, но если ваши точки данных изменяются, скажем, от 0 до 15, «погружение» заставляет линию проходить под осью X, что создает впечатление, будто там некоторые точки данных ниже нуля (что не так).

Как я могу это исправить (желательно легко;)

Это было полезно?

Решение

На этот вопрос нет простого ответа.Самым простым решением будет поддержание напряжения около нуля.

ZedGraph использует параметр натяжения DrawCurve GDI для применения плавности, что, вероятно, является интерполяцией Эрмита.Вы можете попытаться реализовать свою собственную косинусную интерполяцию, которая по своей природе сохранит локальные экстремумы.Вы можете посмотреть эту ссылку, чтобы понять, почему:http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/interpolation/

РЕДАКТИРОВАТЬ:Сайт не работает.Вот кэшированная версия страницы:http://web.archive.org/web/20090920093601/http://local.wasp.uwa.edu.au/~pbourke/miscellaneous/interpolation/

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

Вы можете попробовать изменить свойство myCurve.Line.SmoothTension вверх или вниз и посмотреть, поможет ли это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top