Линейный график служб отчетов: как лучше контролировать сглаженную кривую - PullRequest
0 голосов
/ 21 сентября 2008

У меня есть отчет, который я построил для клиента, где мне нужно построить график x 0-100, y 0-100. Давайте представим, что у меня есть эти очки:

   0,  0
  2,  24
 50,  70
100, 100

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

Вот проблема. Линия проходит отлично от 100 100 (вверху справа) до 2,24. Но тогда происходит то, что от 2,24 до 0,0 линия изгибается слева от графика, а затем до 0,0. Представьте, что вы ставите точку в -10,10.

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

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

Единственный другой ответ, который я могу придумать, - это пользовательское рисование графика или просмотр Dundas Charts и использование его GDI + поддержки рисования.

Но прежде чем идти по этому пути, у кого-нибудь есть мысли?


Вот в чем дело. Я знаю, как нарисовать кривую вручную. Проблема заключается в том, что между 2 и 50 есть такой большой вес. Я пытался добавить точки на минимумах и серединах, но он все еще был склонен к краю. Мне нужно будет проверить исходный код, изменить график и посмотреть, смогу ли я получить скриншот.

Сейчас у меня просто остановка графика на 2, пока я не смогу решить эту проблему.

Ответы [ 2 ]

2 голосов
/ 21 сентября 2008

альтернативный текст http://img140.imageshack.us/img140/1279/smoothlinebezierxl0.jpg

(Предоставление картины поведения, чтобы помочь вам получить лучший ответ).

Для тех, у кого есть теория, вы можете попробовать это и в Excel (не только в Reporting Services).

Вы упомянули добавление точек в своем вопросе, но кажется, что добавление интерполированных точек рядом с проблемной областью дает желаемый эффект (например, {(1,12), (1.5, 18)}). Это в лучшем случае неуклюжее «решение».

0 голосов
/ 21 сентября 2008

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

...