Что такое масштабирование. Масштабирование бизнеса - это что такое? Эмуляторы Glide и DirectX

Всем дарова. Сегодня будем говорить о непонятном, а именно о том что такое Масштабирование ГП AMD. По названию понятно что масштабирование, но чего именно? ГП это наверно GP, что означает графический процессор. Короче я не буду гадать, я полетел в интернет, там поищу инфу. Ребята, первая инфа уже есть. Вроде бы это подгонка разрешения игр под разрешение моника. Короче вроде как штука полезная, но нужно проверять на деле, чтобы картинка была не размытой и была комфортная для восприятия. То есть нужно включать Масштабирование ГП, потом отключить, сравнивать, короч экспериментировать типа…

Толком понять не могу что такое Масштабирование ГП. Но понял точно, если моник не совсем стандартный или даже игра какая-то заумная, то по бокам могут быть черные полосы, ну знаете? Ну вот Масштабирование ГП это вроде может исправить, но как? А вот тут я не знаю, оно может картинку растянуть, но качественно это делается или нет, это нужно проверять…

Ребята, я понял только одно, что Масштабирование ГП может помочь когда есть какие-то траблы с разрешением. Например в игре полосы черные по бокам. Особого определения в интернете что это мне не удалось найти, извиняйте.

Так ребята, дальше ищу инфу, ибо немного нужно разобраться все таки что это. Значит вот один чел пишет, что если включать Масштабирование ГП, то картинка становится лучше, чем если включать Выполнять масштабирование на Дисплей. Вот еще один чел пишет, что проблем с растянутостью нет никакой, во многих мониках есть опция как отображать: во весь экран или в формате. И тут чел пишет еще, что там где такой опции нет, то там можно включить Масштабирование ГП. То есть опять же, Масштабирование ГП это что-то типа подгонки игры под моник, чтобы игра заполняла весь моник и чтобы не было черных полос по бокам. Я все понял именно так, но может я ошибаюсь….

Вот один чел на форуме Steam пишет что он раньше играл с видюхой NVIDIA и мог растянуть разрешение, а теперь у него стоит видюха AMD и он не может растянуть разрешение. И вот один чел чему отвечает, что бы он включил Масштабирование ГП. Так что вывод снова делаем такой, что Масштабирование ГП это для растягивания разрешения.

Вот нашел картинку, знаю что тут плоховато видно, за это сори, но здесь вроде отображена именно эта настройка Масштабирование ГП, смотрите:

Ребята, больше не знаю что сказать. Я понял одно, что Масштабирование ГП это опция чтобы химичить с разрешением, когда в игре по бокам черные полосы. Включать опцию или нет, это все зависит от вашего игрового процесса, если полос нет, то включать не нужно, а если есть, то можно попробовать, может станет лучше. На этом все, удачи вам ребята и позитива!

Каждый бизнес должен развиваться. Это позволяет компании занимать лидирующие позиции на рынке. Крупное предприятие становится более устойчивым к воздействию негативных факторов окружающей среды. Для этого проводится масштабирование бизнеса. Существует несколько основных способов развития компании. О них будет рассказано далее.

Особенности масштабирования

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

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

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

Пути расширения

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

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

Выбрать подходящий способ расширения компании позволяют различные тренинги, программы и обучения. Их проводят компании мирового уровня, например, академия масштабирования бизнеса SalePlane, а также региональные организации, например, Like Центр (Краснодар). Опыт таких компаний позволяет разработать правильную стратегию.

Освоение новых методов и каналов продаж

Масштабирование бизнеса (в Краснодаре, Екатеринбурге, Москве и прочих городах нашей страны - не суть важно) проводится разными способами. При этом учитываются особенности конкретного рынка. Существуют компании, которые имеют региональное значение. Их продукция не может выйти на всероссийский или мировой уровень. Чтобы занять место на таких рынках проводится освоение новых каналов продаж или продуктов, которые раньше не выпускались конкретной компанией. Для этого фирма расширяет свои территории сбыта путем реализации посредством сети интернет, на рынках крупных городов по всей стране и т. д. Также компания может направить свои ресурсы на занятие соседних ниш на рынке, привлечение новых партнеров, клиентов.

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

Клонирование бизнеса

Отзывы об академии масштабирования бизнеса SalePlane говорят о большом опыте этой компании в проведении расширения путем клонирования. При этом представленная организация работает в области фрайчазинга. Клонирование бизнеса также может проводиться путем лицензирования.

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

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

Популярность франшизы

Клонирование является одним из самых популярных способов масштабирования бизнеса в розничной торговле. «Создаем франчайзинг за 45 дней» - такое утверждение можно встретить в компании SalePlane. И это не преувеличение. Франчайзинг имеет множество преимуществ. Поэтому его в большинстве случаев выбирают для расширения бизнеса.

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

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

Агрессивный маркетинг

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

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

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

Стратегии увеличения продаж

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

Для этого применяется одна из двух стратегий для увеличения объема продаж. В рамках первой из них проводится улучшение процесса продаж. При этом стоимость продукции увеличивается. Бренд и продуманная маркетинговая политика играют важную роль в этом процессе.

Вторая стратегия предполагает снижение себестоимости. При этом пересматривается технологический цикл. Издержки производства снижаются путем внедрения современных методов, материалов, инноваций. С поставщиками сырья заключаются более выгодные договоры. Это позволяет нарастить объем производства, предлагать потребителю более выгодную продукцию.

Оптимизация бизнес-процессов

Масштабирование бизнеса может быть проведено посредством оптимизации процессов управления, производства и т. д. Эта процедура проводится в несколько этапов. Сначала компания должна осуществить аудит актуальной бизнес-структуры.

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

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

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

Когда расширять бизнес?

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

Американские экономисты сходятся во мнении, что задуматься о расширении своего бизнеса стоит на этапе, когда уровень увеличения прибыли составляет около 6% в неделю. Но лучше всего начинать подобную деятельность, когда компания показывает рост прибыли 10% в неделю.

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

Масштабирование бизнеса проводится на определенном этапе деятельности компании. Чтобы подготовить ее к расширению, необходимо работать над повышением имиджа организации. При этом нужно инвестировать средства в сотрудников. От их работы будет зависеть успешность предприятия.

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

Масштаб мышления

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

Зная, как провести масштабирование бизнеса, можно создать успешную компанию, которая будет прибыльной и стабильной.

Без него невозможно построение ни одной географической карты. Что такое масштаб? И какие виды масштабов существуют в картографии и геодезии? Об этом пойдет речь в данной статье.

Что такое масштаб?

Масштаб - это слово немецкое (masstab), которое состоит из двух частей: mass - "мера, величина" и stab - "палка, жердь". Мерная жердь - вот как можно перевести данный термин.

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

Иными словами, масштаб - это соотношение двух линейных размеров. В картографии он показывает, во сколько раз отрезок на карте (или плане) уменьшен по сравнению с реальной длиной этого же отрезка. При составлении любой географической карты невозможно изобразить объекты (лес, поселок, здание и т. п.) в реальную величину. Поэтому все величины многократно уменьшают (в 5, 10, 100, 1000 раз и так далее). Масштаб карты - это как раз и есть данная величина, выраженная числом.

Виды масштабов

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

Численный масштаб имеет вид дроби. Он наиболее распространен в картографии. Такое обозначение многие из нас видели в нижней части топографической карты или плана местности. Численный масштаб карты имеет следующий вид (к примеру): 1:100 000. Это значит, что реальная длина отрезка на местности в 100 000 раз больше, чем его длина на данной карте.

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

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

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

Как правильно пользоваться масштабом карты? Предположим, вам необходимо по конкретной карте узнать реальное расстояние между селами А и В. При этом вам дан такой масштаб: в 1 см - 0,5 км (или 1:50 000). Для этого нужно взять обычную линейку и измерить расстояние между двумя пунктами по карте. Затем полученную величину (предположим, это отрезок длиной в 5 сантиметров) следует умножить на 0,5 км, соответственно масштабу нашей карты. Таким образом, мы получим правильный ответ: расстояние между селом А и селом В составляет 2,5 километра.

Разновидности карт (по масштабу)

Масштаб выступает одним из критериев для классификации географических карт. Так, согласно ему, все карты делятся на:

  • мелкомасштабные (масштаб до 1:1 000 000);
  • среднемасштабные (от 1:1 000 000 до 1:200 000);
  • крупномасштабные (от 1:200 000 и более).

Разумеется, на крупномасштабных картах местность более детализирована: здесь могут быть показаны отдельные улицы или даже здания. Чем крупнее масштаб карты, тем больше объектов местности на ней можно изобразить.

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

Картографическая генерализация

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

Слово generalis можно перевести с латинского языка как "обобщенный". Генерализация - это процесс отбора тех географических объектов, которые будут изображены на конкретной карте. Причем этот процесс является объективным, целесообразным и научно обоснованным.

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

Картографическая генерализация помогает сделать карту максимально качественной и функциональной, легкочитаемой. Разумеется, она напрямую зависит от масштаба.

В заключение

Итак, что такое масштаб? Данная величина показывает, насколько уменьшено изображение, по сравнению с реальными размерами изображаемого объекта. Это понятие получило наибольшее распространение в картографии и географии. Существует несколько видов масштабов: численный, именованный, линейный и поперечный.

С термином "масштаб" тесно связано понятие картографической генерализации. Этот процесс позволяет топографам отобрать важнейшие географические объекты и отобразить их на географической карте.

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

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

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

Вертикальное и

Вертикальное масштабирование

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

Горизонтальное масштабирование

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

Показатели

См. также

Примечания

Ссылки


"Масштабирование - это функция, которая преобразует входной набор данных в выходной набор в заданном диапазоне."

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

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

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

Это все касается линейного масштабирования, так как это самое простое и понятное. Однако, поняв принцип, вы сможете легко понять и нелинейное масштабирование.

Яблоки и пиксели

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

Var dataset = [ 100, 200, 300, 400, 500 ];

Сначала хорошая новость: каждый месяц ларек продает на сто яблок больше, чем в предыдущем месяце! Взрывной бизнес. Чтобы продемонстрировать этот успех, вы хотите сделать столбиковую диаграмму, иллюстрирующую крутой подъем продажи яблок, где каждому значению проданных яблок соответствует высота одного из столбиков на диаграмме.

До сих пор, мы использовали значения данных напрямую в визуальных параметрах. Так, если было продано 500 яблок, соответствующий столбик будет 500 пикселей в высоту.

Это может сработать, но что насчет следующего месяца, когда будут проданы 600 яблок? А годом позже, когда будет продано 1800 яблок? Ваша аудитория должна будет приобретать дисплеи большего размера, только для того, чтобы видеть всю высоту этих ваших столбиков с проданными яблоками!

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

Области и диапазоны

Входная область данных для масштабируемой функции является диапазоном допустимых входных значений. Учитывая пример с яблоками выше, соответствующая входная область будет либо 100-500(минимальное и максимальное значение набора данных), либо 0-500.

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

Например, сделаем масштабирующую функцию с входной областью данных 100-500, и выходной диапазон значений. Если бы вы дали нашей функции на вход 100, но выходе получили бы 10. Если бы вы дали на вход 500, но выходе получили бы 350. Если на входе 300, то на выходе 180 получите и распишитесь(300 - это середина входной области данных, а 180 середина выходного диапазона).

Мы можем отобразить входную область данных и выходной диапазон значений так:

Input domain 100 300 500 10 180 350 Output range

Еще одна вещь: не стоит путать эти два понятия входной диапазон данных и выходной диапазон значений.

Нормализация

Если вы знакомы с концепцией нормализации, может быть полезным вам знать, как все происходит в нашем примере на самом деле.

Нормализацией является процесс преобразования числовых значений в новые значения в диапазоне от 0 до 1, основываясь на минимальном и максимальном начальных значениях. Например, в году 365 дней. 310й день в году это около 0.85 года, или если в процентах, то 85%.

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

Реализуем масштабирование

Генератор масштабируемых функций в D3 доступен по адресу d3.scale , где далее указываете необходимую вам масштабируемую функцию.

Var scale = d3.scale.linear();

Мои поздравления! Теперь scale - это функция, через которую вы можете пропускать входные значения(Помните, в JavaScript переменные могут хранить также и функции).

Scale(2.5); //Returns 2.5

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

Мы можем задать входную область значений 100-500, передавая эти значения в метод domain() в качестве массива:

Scale.domain();

Также мы устанавливаем выходной диапазон вызовом метода range() :

Scale.range();

Эти шаги могут быть сделаны отдельно, как сделаны выше, или мы можем использовать цепочки вызовов:

Var scale = d3.scale.linear() .domain() .range();

В любом случае, наша масштабирующая функция готова к использованию!

Scale(100); //Returns 10 scale(300); //Returns 180 scale(500); //Returns 350

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

Масштабируем точечную диаграмму

Давайте посмотрим на наш набор данных для точечной диаграммы:

Var dataset = [ , , , , , , , , , ];

Вспомните, что набор данных представляет из себя массив массивов. Мы использовали первое значение в каждом массиве как координату х , а второе значение, как координату y . Давайте начнем с оси x .

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

Почему вы на меня так смотрите? Ааа, потому что вы хотите, чтобы ваш код был гибким и масштабируемым, чтобы он работал, даже если наши данные изменятся в будущем. Умно!

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

D3.max(dataset, function(d) { //Returns 480 return d; //References first value in each sub-array });

Соберем наш код вместе и получим масштабирующую функцию для оси x :

Var xScale = d3.scale.linear() .domain() .range();

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

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

И в конечном итоге, я установил выходной диапазон значений 0-w , то есть ширина нашего SVG.

Мы будем использовать точно такой же подход для создания масштабируемой функции для оси y :

Var yScale = d3.scale.linear() .domain() .range();

Обратите внимание что метод max() ссылается на d , координату y нашего подмассива. Также максимальным значением выходного диапазона(метод range() ) выставлено h вместо w .

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

Attr("cx", function(d) { return d; })

и изменим его, используя масштабирующую функцию:

Attr("cx", function(d) { return xScale(d); })

Повторим этот подход и для оси y . Заменим старый код:

Attr("cy", function(d) { return d; })

Attr("cy", function(d) { return yScale(d); })

Теперь сделаем такие же изменения в тех местах, где мы устанавливаем координаты для текстовых меток. Так, старый код ниже:

Attr("x", function(d) { return d; }) .attr("y", function(d) { return d; })

превращается в:

Attr("x", function(d) { return xScale(d); }) .attr("y", function(d) { return yScale(d); })

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

Переработка диаграммы

Возможно, вы заметили, что меньшие значения y расположены в верхней части диаграммы, а большие значения y расположены ближе к низу. Теперь, так как мы используем масштабирующую функцию, супер просто поменять расположение больших и маленьких значений местами: чтобы большие значения были расположены в верхней части диаграммы, как можно было бы и ожидать. Мы просто изменим выходной диапазон для yScale , меняя:

Range();

Range();

Да, теперь меньшим значениям y на входе соответствуют большие значения y на выходе, тем самым получается эффект, которого мы добивались. Я знаю, это так легко!

Так как некоторые элементы изображения обрезаются, введем переменную отступа от краев:

Var padding = 20;

Теперь мы включим эту переменную в расчет диапазона выходных значений как по оси x , так и по оси y . Раньше xScale был range() , теперь:

Range();

Раньше yScale был range() , теперь:

Range();

Теперь у нас есть в запасе 20 пикселей сверху, снизу, слева, справа SVG-элемента, которые не берутся в расчет. И готово!


Но текстовые метки справа до сих пор могут обрезаться. Тогда, я просто увеличу отступ справа в два раза:

Range();

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

Var rScale = d3.scale.linear() .domain() .range();

Потом устанавливаю радиус круга таким образом:

Attr("r", function(d) { return rScale(d); });

Мы теперь гарантируем, что наши значения радиуса будут находиться в диапазоне значений 2-5(или почти всегда. Смотрите ссылку на метод clamp() ниже). Так, значения 0(минимальное число в области входных значений) будут иметь окружность радиусом 2 пикселя(или диаметр 4 пикселя), а очень большим значениям будут соответствовать круги с радиусом 5(диаметром 10) пикселей.


Вуаля! Наша первая масштабирующая функция, которая не участвует в расчете координат.

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


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

А теперь, последнее откровение: сейчас мы можем очень просто изменить размер нашего SVG, и все будет смасштабировано самостоятельно. Здесь, я увеличил переменную h с 100 до 300, и больше никаких изменений не сделал:


И снова, бум! Рабочий пример обновленного кода. Надеюсь, вы видите это и осознаете: больше не будет бессонных ночей, проведенных за модификацией кода только потому что клиент решил, что график должен быть в ширину 800 пикселей вместо задуманных 600. Да, вы будете спать благодаря мне(и блестящим встроенным методам D3)! Быть хорошо отдохнувшим - это конкурентное преимущество. Вы можете меня поблагодарить позже.

Другие методы

d3.scale.linear() имеет несколько других удобных методов, которые заслуживают краткого упоминания здесь:

  • nice() - он говорит масштабирующей функции принять все что угодно в качестве выходного диапазона и расширить этот диапазон в обе стороны до ближайшего округленного значения. Выдержка из wiki D3: "Например, для области входных данных , метод вернет ". Это удобно для людей, кому сложно читать цифры, подобные этой: 0.20147987687960267.
  • rangeRound() - используйте этот метод вместе range() , и все выходные значения масштабирующей функции будут округлены до ближайшего целого числа. Этот метод полезен случае, когда вам нужны фигуры с точными значениями пикселей, чтобы избежать нечетких краев, которые могут возникнуть при сглаживании.
  • clamp() - по-умолчанию, линейное масштабирование может возвращать значения вне указанного выходного диапазона. Например, если дано значение, находящееся за пределами входной области значений, масштабирующая функция также вернет значение, расположенное вне диапазоны выходных значений. Если вызвать метод .clamp(true)
  • quantize - линейная функция масштабирования с дискретными значениями выходного диапазона.
  • quantile - аналогична функции выше, но дискретными значениями на входной области значений.
  • ordinal - порядковое масштабирование использует не количественные значения(как категории имен) на выходе; подходит для сравнения яблок с апельсинами.