<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Блог Михаила Озорнина: заметки с тегом cubism.js</title>
<link>https://mikeozornin.ru/blog/tags/cubism-js/</link>
<description>Главная · Блог · Работы ·</description>
<author>Михаил Озорнин</author>
<language>ru</language>
<generator>E2 (v3798; Aegea)</generator>

<itunes:owner>
<itunes:name>Михаил Озорнин</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Главная · Блог · Работы ·</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Что делать с масштабом временных рядов</title>
<guid isPermaLink="false">75</guid>
<link>https://mikeozornin.ru/blog/all/time-series-scale/</link>
<pubDate>Wed, 24 Jan 2018 11:18:34 +0300</pubDate>
<author>Михаил Озорнин</author>
<comments>https://mikeozornin.ru/blog/all/time-series-scale/</comments>
<description>
&lt;p&gt;Хочу рассказать про один способ отображения временных рядов (time series — графиков, где ось абсцисс — время).&lt;/p&gt;
&lt;p&gt;Например, есть такой график:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/cubism-1@2x.png" width="614" height="114" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Представим, что нам нужно отслеживать состояние какой-то сложной системы со многими параметрами: загрузкой ЦПУ, сетью, трафиком и чем-то ещё. В этом случае графики должны помогать нам:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;замечать выбросы, отличающиеся от нормального поведения системы: &lt;i&gt;какая-то аномальная загрузка ЦП в датацентре Амстердама, большой исходящий трафик в Сингапуре;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;отмечать какие-то паттерны: &lt;i&gt;в датацентрах какая-то периодическая дисковая активность в середине дня;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;видеть при этом каждый из параметров: &lt;i&gt;здесь наблюдается плавный рост, а потом резкое падение — сработало масштабирование нагрузки, а во втором случае рост был быстрый, системы масштабирования не успели отреагировать;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;сравнивать параметры между собой: &lt;i&gt;серверы в Сингапуре почти всегда загружены, а в Европе простаивают, не дотягивают и трети сингапурских;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;aside class="aside-margin-right"&gt;&lt;span class="related-title"&gt;&lt;a href="https://bureau.ru/bb/soviet/20150407/"&gt;Мы решили объединить эти значения в один график&lt;/a&gt; — совет бюро, в котором рассказывается почему не надо накладывать графики друг на друга&lt;/span&gt;&lt;/aside&gt;&lt;/p&gt;
&lt;p&gt;Чтобы сравнить много графиков, проще всего сложить их в стопку (иногда накладывают их друг на друга на одной оси, но так делать не надо). Чтобы все они влезли, нам придется изменить вертикальный масштаб:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/cubism-2@2x.png" width="614" height="112" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Если графиков будет много, то получится нечитаемая каша:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/series.png" width="1970" height="1112" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Масштаб графиков по высоте стал совсем плохой: попробуйте заметить здесь те самые выбросы и отклонения и проследите взаимосвязи между параметрами. Невозможно, да.&lt;/p&gt;
&lt;p&gt;Сейчас я немного изменю график, чтобы показать, как можно компенсировать эти проблемы.&lt;/p&gt;
&lt;p&gt;Исходный график:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/cubism-1@2x.png" width="614" height="114" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Сначала поделим наш график по оси ординат на несколько групп:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/cubism-3@2x.png" width="614" height="114" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;aside class="aside-margin-right"&gt;&lt;span class="related-title"&gt;&lt;a href="http://colorbrewer2.org"&gt;Color Brewer&lt;/a&gt; — специальный инструмент для составления цветовых шкал&lt;/span&gt;&lt;/aside&gt;&lt;/p&gt;
&lt;p&gt;Потом раскрасим их по возрастанию значения:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/cubism-4@2x.png" width="614" height="114" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;И сложим их одну на другую:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/cubism-5@2x.png" width="614" height="114" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Весь процесс (гифка):&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/cubism-total@2x.gif" width="614" height="114" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;И как раз такие графики можно снова сложить стопкой:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/series-colored.png" width="1968" height="1164" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Такой график отлично показывает наличие пиков и нулей: пики — яркие, нули — пустоты. Кроме этого он не портит вертикальный масштаб: не сжимает его и не растягивает.&lt;br /&gt;
&lt;small&gt;&lt;a href="https://ilyabirman.ru/meanwhile/all/vertical-scale/"&gt;Оптимальный вертикальный масштаб графика, Илья Бирман&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;
&lt;p&gt;И с нашими ожиданиями от графика стало все лучше, вот с этими:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;замечать выбросы, отличающиеся от нормального поведения системы,&lt;/li&gt;
&lt;li&gt;отмечать какие-то паттерны,&lt;/li&gt;
&lt;li&gt;видеть при этом каждый из параметров,&lt;/li&gt;
&lt;li&gt;сравнивать параметры между собой.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ещё раз было-стало:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;div class="fotorama" data-width="1970" data-ratio="1.7715827338129"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/series.png" width="1970" height="1112" alt="" /&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/series-colored.png" width="1968" height="1164" alt="" /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Программировать с нуля такую штуку не придется: компания Square, делающая терминалы для приема оплаты с банковских карт, разработала библиотеку для такой визуализации.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;a href="http://square.github.io/cubism/" class="e2-text-picture-link"&gt;
&lt;img src="https://mikeozornin.ru/blog/pictures/cubism-js@2x.png" width="985" height="458" alt="" /&gt;
&lt;/a&gt;&lt;div class="e2-text-caption"&gt;&lt;a href="http://square.github.io/cubism/"&gt;http://square.github.io/cubism/&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Ссылки по теме:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.perceptualedge.com/articles/visual_business_intelligence/time_on_the_horizon.pdf"&gt;Time on the Horizon, Stephen Few и Perceptual Edge, PDF&lt;/a&gt; Оригинальная статья, по которой я писал пост&lt;/li&gt;
&lt;li&gt;&lt;a href="https://bureau.ru/bb/soviet/20150407/"&gt;Мы решили объединить эти значения в один график&lt;/a&gt; Совет бюро, в котором рассказывается почему не надо накладывать графики друг на друга&lt;/li&gt;
&lt;li&gt;&lt;a href="http://colorbrewer2.org"&gt;Color Brewer&lt;/a&gt; Специальный инструмент для составления цветовых шкал&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ilyabirman.ru/meanwhile/all/vertical-scale/"&gt;Оптимальный вертикальный масштаб графика, Илья Бирман&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>


</channel>
</rss>