2017-01-12 2 views
0

У меня есть диаграмма с 3 строками, каждая из них динамика (серия точек меняется в любое время). Для двух линий у меня есть несколько точек, до 20 и для другого, то есть сплайн, до 500. (всегда в том же диапазоне х)C# MS Charts получить значение Y от общего X

Мне нужно проверить, находится ли сплайн между две другие линии. Другими словами, для каждой точки сплайна получают значение Y всех строк и проверяют, находится ли он в диапазоне.

Как я мог бы достичь этого?

Я уже попробовал код последующего, но когда я называю точку X, который не определен в двух других линиях я буду иметь только значение Y для сплайна:

var a = chart1.Series.Select(series => series.Points.Where(point => point.XValue == 7).ToList()).ToList(); 

следовать образ граф, как:

Синие и желтые линии являются теми «менее определенным», и я должен проверить, если красный один остается между ними

ответ

1

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

Предположим, что ваша верхняя граница (ub) определена в пяти точках: 1,2,5,6,9. Простой способ сделать линейную интерполяцию - найти двух ближайших соседей и сделать средневзвешенное значение. например ub (5.5) = ub (5)/2 + ub (6)/2

Существует много способов сделать линейную интерполяцию 1D, и если вы будете искать ее в stackoverflow, вы сможете найти существующие решения.

+0

Итак, нет никакого способа, чтобы C# давал вам значение Y любой точки на графике, даже если графика сконструирована, и он должен знать в любом случае? Это ужасно для меня. BTW Я мог бы также рассчитать «каждый пропущенный Y» для двух других линий. И после сравнения. –

+0

Нет, это невозможно. Для одного значения y ни в коем случае не являются уникальными: линия или сплайн могут легко откидываться назад. Вам нужно рассчитать это самостоятельно. Для строк это тривиально. Одним из способов для сплайнов может быть воссоздание их в графическом пути, а затем для рендеринга их в линии с использованием 'Flatten' .. – TaW

 Смежные вопросы

  • Нет связанных вопросов^_^