Итак, что я пытаюсь сделать, так это взять массив больших чисел, скажем, от 0 до 600 КБ, и уменьшить их, чтобы они представляли одну и ту же тенденцию, но в диапазоне от 0,5 до 1,5.
Вот ситуация...
1) КРАСНАЯ полоса представляет собой объем продаж.
2) СИНЯЯ линия представляет цену за единицу.
3) РОЗОВАЯ строка представляет сумму бюджета для цены за единицу.
4) ЗЕЛЕНАЯ линия должна представляют строку бюджета для суммы продаж.
Позвольте мне наметить, что я пытался сделать, и дать вам некоторое представление о том, что мне нужно сделать.
Шкала слева (ChartGroup0) используется для представления линейных графиков, а шкала справа (ChartGroup1) — для гистограммы. Данные, подаваемые на РОЗОВУЮ и СИНЮЮ линии, находятся в диапазоне от 0,5 до 1,3; Однако данные ЗЕЛЕНЫХ линий находятся в диапазоне от 0 до 600K.
Элемент управления, который я использую C1Chart
, состоит максимум из двух групп диаграмм, и каждая группа диаграмм может иметь только ОДИН связанный тип диаграммы. Это означает, что если я хочу иметь ЗЕЛЕНУЮ линейную диаграмму, чтобы представить Бюджет суммы продаж и масштабировать ее в соответствии со шкалой справа, мне нужно будет добавить ее в (ChartGroup0) и масштабировать значения вниз, чтобы соответствовать в левом диапазоне весов.
Вот тут у меня проблема. Я пытался использовать алгоритм, который нашел здесь, в stackoverflow, но безрезультатно. (Как уменьшить значения, чтобы они соответствовали минимальным и максимальным значениям)
Кажется, я не могу придумать способ точного уменьшения значений для отображения той же тенденции.
Я знаю, что это может немного сбить с толку, поэтому не стесняйтесь задавать любые вопросы, и я заранее благодарю вас за любые указания, которые вы можете мне дать.
С наилучшими пожеланиями,
Ник
p.s. Изображение является примером того, как должна выглядеть диаграмма, а не того, что она может делать в настоящее время. Значения и масштабы также будут динамическими, но я считаю, что придумать способ определения максимума и минимума не будет проблемой, как только я смогу найти точный алгоритм масштабирования.
if(numLength == 6) { /* divide by 100k */ }
if(numLength == 7) { /* divide by 1000000 */ }
и т. д. Конечно, вы можете использовать перечисление для длин вместо магических чисел, но это полностью на ваше усмотрение. - person Ingenioushax   schedule 13.07.2016value
- 200 000) / (600 000 - 200 000)) + 0,5. К вашему сведению, заявленная цель (в тексте) не соответствует примеру на изображении. Изображение имеет 0 = 0,5 и 600k = ~ 1,26. - person Wyatt Earp   schedule 13.07.2016