<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Weekly Charts</title><generator>teletype.in</generator><description><![CDATA[Weekly Charts]]></description><link>https://teletype.in/@weekly_charts?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=weekly_charts</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/weekly_charts?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/weekly_charts?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 08 Apr 2026 04:16:24 GMT</pubDate><lastBuildDate>Wed, 08 Apr 2026 04:16:24 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@weekly_charts/NQBfaBt0zwL</guid><link>https://teletype.in/@weekly_charts/NQBfaBt0zwL?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=weekly_charts</link><comments>https://teletype.in/@weekly_charts/NQBfaBt0zwL?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=weekly_charts#comments</comments><dc:creator>weekly_charts</dc:creator><title>Визуализируем данные мониторинга температуры процессора Rapsberry PI Zero W</title><pubDate>Wed, 21 Sep 2022 00:52:43 GMT</pubDate><tt:hashtag>week02</tt:hashtag><tt:hashtag>температура</tt:hashtag><tt:hashtag>raspberry_pi</tt:hashtag><tt:hashtag>step_line_chart</tt:hashtag><tt:hashtag>r</tt:hashtag><description><![CDATA[<img src="https://img3.teletype.in/files/a9/70/a970117a-d1c8-4b9d-a9a2-bf1a9440c00f.jpeg"></img>Прошлый пост был посвящен автоматическому скачиванию и подготовке  данных о погоде в регионах России для создания интерактивной плиточной карты РФ. Для автоматического обновления данных используется скрипт на языке R, который выполняется по расписанию (ежедневно каждые три часа) на моем маленьком домашнем устройстве — Raspberry PI Zero W. ]]></description><content:encoded><![CDATA[
  <tt-tags id="ocQV">
    <tt-tag name="week02">#week02</tt-tag>
    <tt-tag name="температура">#температура</tt-tag>
    <tt-tag name="raspberry_pi">#raspberry_pi</tt-tag>
    <tt-tag name="step_line_chart">#step_line_chart</tt-tag>
    <tt-tag name="r">#r</tt-tag>
  </tt-tags>
  <p id="oiHH">Прошлый пост был посвящен <a href="https://teletype.in/@weekly_charts/editor/YodM2Y8SNmM" target="_blank">автоматическому скачиванию и подготовке  данных о погоде</a> в регионах России для создания интерактивной <a href="https://www.datawrapper.de/_/Lugge/" target="_blank">плиточной карты</a> РФ. Для автоматического обновления данных используется скрипт на языке R, который выполняется по расписанию (ежедневно каждые три часа) на моем маленьком домашнем устройстве — <a href="https://ru.wikipedia.org/wiki/Raspberry_Pi" target="_blank">Raspberry PI Zero W</a>. </p>
  <figure id="fSuk" class="m_column">
    <img src="https://img3.teletype.in/files/a9/70/a970117a-d1c8-4b9d-a9a2-bf1a9440c00f.jpeg" width="960" />
    <figcaption>Маленький домашний помощник, работающий в режиме 24/7</figcaption>
  </figure>
  <p id="6jti"><strong>Исходные данные: </strong><a href="https://disk.yandex.ru/d/b6Qu6RSAUGXqLg" target="_blank">cpu_temp.log</a></p>
  <p id="Wlil">В этот раз мы будем визуализировать данные поминутного изменения температуры процессора Raspberry PI, которые сохраняются в специальным лог-файле c помощью <a href="https://habr.com/ru/company/ruvds/blog/325522/" target="_blank">bash-скрипта</a>:</p>
  <pre id="QRyj" data-lang="bash">#!/bin/bash
date +&quot;%d.%m.%Y %T&quot; | tr &#x27;\n&#x27; &#x27;\t&#x27; &gt;&gt; /home/pi/cpu_temp.log ; vcgencmd measure_temp| tr -d &quot;temp=&quot; | tr -d &quot;&#x27;C&quot; &gt;&gt; /home/pi/cpu_temp.log</pre>
  <p id="DnLt">Для запуска bash-скрипта по расписанию через cron была добавлена запись (каждую минуту):</p>
  <p id="fugC">*/1 * * * * ~/cpu_temp.sh<br /><br />В результате выполнения скрипта данные о температуре процессора сохраняются в лог:</p>
  <figure id="b4py" class="m_column">
    <img src="https://img1.teletype.in/files/c9/6f/c96fa507-8055-46ee-8d19-72e9af29eff4.png" width="1065" />
  </figure>
  <p id="VbpY">Эти данные мы и будем визуализировать с помощью R (<a href="https://disk.yandex.ru/d/NgkCtteoZ-fPag" target="_blank">cpu_temp.R</a>), лого для вставки на график:  <a href="https://disk.yandex.ru/d/dP16Vwq9sH6RNQ" target="_blank">https://disk.yandex.ru/d/dP16Vwq9sH6RNQ</a></p>
  <pre id="zqMt" data-lang="r">library(tidyverse)
library(readr)
library(geomtextpath)
library(glue)
library(here)
# Загружаем логотип Raspberry Pi
# лого: https://disk.yandex.ru/d/dP16Vwq9sH6RNQ
png &lt;- magick::image_read(&quot;raspberrypi-logo.png&quot;)
img &lt;- grid::rasterGrob(png, interpolate = TRUE)
# Загружаем данные (лог температуры)
cpu_temp &lt;- read_delim(
    &quot;cpu_temp.log&quot;,
    delim = &quot;\t&quot;,
    col_names = c(&quot;datetime&quot;, &quot;cpu_temp&quot;),
    trim_ws = TRUE) %&gt;%
  mutate(datetime = lubridate::as_datetime(datetime,
                                           &quot;%d.%m.%Y %H:%M:%S&quot;,
                                           tz = &quot;Asia/Yekaterinburg&quot;))
# Временной интервал для графика -- последние 3 часа из лога
last_datetime &lt;- cpu_temp$datetime[length(cpu_temp$datetime)]
first_datetime &lt;- last_datetime - lubridate::hours(3)
# Описательные для графика (мин, макс, среднее)
maxTempCPU &lt;- max(cpu_temp$cpu_temp[between(cpu_temp$datetime,
                                            first_datetime, last_datetime)])
minTempCPU &lt;- min(cpu_temp$cpu_temp[between(cpu_temp$datetime,
                                            first_datetime, last_datetime)])
meanTempCPU_period &lt;-
  round(mean(cpu_temp$cpu_temp[between(cpu_temp$datetime,
                                       first_datetime, last_datetime)]), 1)
# для вставки лого
# mt &lt;- ceiling(max(cpu_temp$cpu_temp[between(cpu_temp$datetime,
                                            # first_datetime, last_datetime)]))
mt &lt;- ceiling(max(cpu_temp$cpu_temp))
mt_min &lt;- floor(min(cpu_temp$cpu_temp))
x_max &lt;- last_datetime + lubridate::minutes(25)
x_min &lt;- last_datetime + lubridate::minutes(10)

cpu_temp %&gt;%
  filter(between(datetime, first_datetime, last_datetime)) %&gt;%
  ggplot(aes(datetime, cpu_temp)) +
  annotation_custom(
    img,
    ymin = mt ,
    ymax = mt + 8.25,
    xmin = x_min,
    xmax = x_max
  ) +
  geom_texthline(
    yintercept = mean(cpu_temp$cpu_temp),
    size = 3.75,
    linetype = &quot;dashed&quot;,
    linewidth = 0.25,
    label = glue(&quot;Среднее за всё время: &lt;b&gt;{round(mean(cpu_temp$cpu_temp),1)}&lt;/b&gt;°C&quot;),
    hjust = 0.985,
    vjust = -0.2,
    color = &quot;gray70&quot;,
    rich = TRUE
  ) +
  geom_texthline(
    yintercept = meanTempCPU_period,
    size = 3.75,
    linewidth = 0.25,
    label = glue(&quot;Среднее за 3 часа: &lt;b&gt;{meanTempCPU_period}&lt;/b&gt;°C&quot;),
    hjust = 0.985,
    vjust = -0.2,
    color = &quot;gray70&quot;,
    rich = TRUE
  ) +
  geom_step(color = &quot;gray10&quot;) +
  scale_y_continuous(
    breaks = seq(mt_min, mt + 1, 2),
    limits = c(mt_min, mt + 1),
    labels = c(as.character(seq(mt_min, mt - 1, 2)),
               glue::glue(&quot;{mt + 1}°C&quot;))
  ) +
  scale_x_datetime(
    &quot;Время&quot;,
    date_breaks = &quot;30 min&quot;,
    date_labels = &quot;%H:%M&quot;,
    expand = c(0.15, 0)
  ) +
  labs(
    title = &quot;Температура процессора Raspberry Pi Zero W&quot;,
    subtitle = glue(
      &quot;Поминутное изменение температуры за последние 3 часа\n&quot;,
      &quot;{format(first_datetime, format = &#x27;%d %b %H:%M&#x27;)} - {format(last_datetime, format = &#x27;%H:%M&#x27;)}&quot;,
      &quot; | Мин {minTempCPU}°C | Среднее {meanTempCPU_period}°C | Макс {maxTempCPU}°C&quot;
    ),
    x = &quot;Время&quot;,
    y = &quot;&quot;
  ) +
  coord_cartesian(clip = &quot;off&quot;) +
  theme(text = element_text(family = &quot;Open Sans&quot;),
        panel.background = element_blank(),
        axis.title.x = element_text(size = 14),
        plot.margin = margin(25, 30, 10, 12),
        plot.title.position = &quot;plot&quot;,
        plot.subtitle = element_text(size = 12, color = &quot;gray60&quot;),
        title = element_text(size = 16),
        axis.text.y = element_text(size = 12),
        axis.text.x = element_text(size = 12)
  )
ggsave(
  glue(&quot;img/cpu_temp_{format(last_datetime, &#x27;%d_%m_%Y_%H_%M&#x27;)}.png&quot;),
  dpi = 300,
  scale = 1.5
)</pre>
  <figure id="9ZT5" class="m_retina">
    <img src="https://img2.teletype.in/files/5e/a2/5ea28891-a00e-4211-a5c2-80b2c849d716.png" width="928" />
  </figure>
  <p id="XEXt">Для запуска скрипта каждые три часа создадим задачу в cron:</p>
  <p id="SWy9">0 */3 * * * Rscript /home/pi/cpu_temp/cpu_temp_pi.R<br /></p>
  <p id="Ncvy">Полученный график будем отправлять себе в телеграм через телеграм-бота, созданного специально для отправки личных уведомлений простой командой в конце нашего скрипта:</p>
  <pre id="Q47c" data-lang="r">bot$sendPhoto(chat_id,
              photo = glue(&quot;~/cpu_temp/img/cpu_temp_{format(last_datetime, &#x27;%d_%m_%Y_%H_%M&#x27;)}.png&quot;)
)</pre>
  <figure id="Xgdc" class="m_column">
    <img src="https://img2.teletype.in/files/92/24/9224f1fb-06b1-41ca-b1b7-484c6d309e63.jpeg" width="720" />
  </figure>
  <p id="4NW4"></p>
  <p id="SIDF"><strong>Мой телеграм-канал: <a href="https://t.me/weekly_charts" target="_blank">https://t.me/weekly_charts</a></strong></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@weekly_charts/YodM2Y8SNmM</guid><link>https://teletype.in/@weekly_charts/YodM2Y8SNmM?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=weekly_charts</link><comments>https://teletype.in/@weekly_charts/YodM2Y8SNmM?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=weekly_charts#comments</comments><dc:creator>weekly_charts</dc:creator><title>Погода в регионах России</title><pubDate>Tue, 13 Sep 2022 20:59:01 GMT</pubDate><tt:hashtag>r</tt:hashtag><tt:hashtag>datawrapper</tt:hashtag><tt:hashtag>weather</tt:hashtag><tt:hashtag>плиточные_карты</tt:hashtag><tt:hashtag>api</tt:hashtag><description><![CDATA[<img src="https://img2.teletype.in/files/9f/32/9f320603-b9a1-46a3-a42e-03335a4b9345.png"></img>В русскоязычном датавиз-чате спросили:]]></description><content:encoded><![CDATA[
  <tt-tags id="6vbZ">
    <tt-tag name="r">#r</tt-tag>
    <tt-tag name="datawrapper">#datawrapper</tt-tag>
    <tt-tag name="weather">#weather</tt-tag>
    <tt-tag name="плиточные_карты">#плиточные_карты</tt-tag>
    <tt-tag name="api">#api</tt-tag>
  </tt-tags>
  <p id="gU5t">В русскоязычном датавиз-чате спросили:</p>
  <figure id="xG9z" class="m_original">
    <img src="https://img2.teletype.in/files/9f/32/9f320603-b9a1-46a3-a42e-03335a4b9345.png" width="579" />
  </figure>
  <p id="eNta">Почему бы не попробовать сделать подобное для России?</p>
  <h3 id="7N5U"><strong>Исходные данные</strong></h3>
  <p id="F2iC">Я вспомнил, что как-то давно для Екатеринбурга уже получал данные о погоде в R с помощью <a href="https://openweathermap.org/api" target="_blank">API от OpenWeather </a>и пакета <a href="https://github.com/crazycapivara/owmr" target="_blank">owmr</a>. Можно попробовать с помощью R скачать данные о погоде для всех <a href="https://ru.wikipedia.org/wiki/Административные_центры_субъектов_Российской_Федерации" target="_blank">административных центров субъектов РФ</a>, а визуализацию сделать в виде интерактивной <a href="https://gizh.ru/all/russian-tilemap/" target="_blank">плиточной карты</a> в Datawrapper.</p>
  <h3 id="tDOH"><strong>Краткое описание процесса получения и предобработки данных в R</strong></h3>
  <p id="xU8v"><em>Если вы не знаете R, можете пропустить эту часть, сохранив себе ссылку на гугл-таблицу из 5 шага.</em></p>
  <p id="TA91"><strong>Шаг 1)</strong> Из Википедии скачиваем список регионов и список административных центров регионов:</p>
  <pre id="VIen" data-lang="r">library(tidyverse)
library(rvest)

url &lt;- &quot;https://ru.wikipedia.org/wiki/Административные_центры_субъектов_Российской_Федерации&quot;

regions &lt;- read_html(url) %&gt;%
  html_element(&quot;table&quot;) %&gt;%
  html_table() %&gt;%
  filter(!is.na(&#x60;Код ОКАТО&#x60;)) %&gt;%
  mutate(&#x60;Субъект Российской Федерации&#x60; = gsub(&quot;\\[1\\]&quot;, &quot;&quot;, 
                                               &#x60;Субъект Российской Федерации&#x60;)) %&gt;%
  select(&#x60;Субъект Российской Федерации&#x60;, &#x60;Административный центр&#x60;) %&gt;% 
  rename(&quot;region&quot; = &quot;Субъект Российской Федерации&quot;, 
             &quot;city&quot; = &quot;Административный центр&quot;)
           </pre>
  <p id="SXFt">Итак, таблица со списком регионов и их админ-центрами выглядит так:</p>
  <figure id="nJp6" class="m_original">
    <img src="https://img1.teletype.in/files/0f/d0/0fd057ef-4c1d-418a-84c1-726a7d5011ec.png" width="605" />
  </figure>
  <p id="sEi4"><strong>Файл:</strong> Административные центры субъектов РФ <a href="https://disk.yandex.ru/d/gMylbj2sIfDbXA" target="_blank">regions.csv</a></p>
  <p id="mXar"><strong>Шаг 2)</strong> Для получения данных о погоде через API командой find_city() пакета qwmr нам необходимо получить ID городов, сохранив в виде csv-таблицы:</p>
  <figure id="DsLA" class="m_column">
    <img src="https://img4.teletype.in/files/f7/bd/f7bd0894-a3f7-4f48-b025-ec4b6fbc419b.png" width="1081" />
  </figure>
  <p id="JepH"><strong>Файл: </strong>ID городов <a href="https://disk.yandex.ru/d/CJdpQPfeAESgLw" target="_blank">city_admin.csv</a></p>
  <p id="4tq5"><strong>Шаг 3) </strong>Также нам пригодится два файла: эмодзи-символы погоды и их соответствие кодам иконок сервиса и таблица-ключ с названиями регионов для последующего объединения датасетов (данных о погоде и названий регионов), в котором присутствует наименование регионов и метки (аббревиатуры) регионов, чтобы их распознал Datawrapper.</p>
  <p id="cnOr"><strong>Файл:</strong> иконки и символы погоды <a href="https://disk.yandex.ru/d/maSoDY-LhgvVvA" target="_blank">weather_icons.csv</a> </p>
  <p id="NKYT"><strong>Файл:</strong> таблица-ключ регионов <a href="https://disk.yandex.ru/d/h2gjH6zZ7DcYfw" target="_blank">regions_key.csv</a></p>
  <p id="f0jI"><strong>Шаг 4)</strong> Получаем данные о погоде по 85 городам c помощью предварительно написанной функции:</p>
  <pre id="Jv9i" data-lang="r"># Текущая погода по административным центрам
get_city_weather &lt;- function(city) {
  res &lt;- get_current(city, units = &quot;metric&quot;, lang = &quot;RU&quot;) %&gt;%
    owmr_as_tibble() %&gt;%
    mutate(name = city) %&gt;%
    select(name, dt_txt, temp, temp_min, 
           temp_max, weather_id, 
           weather_main, weather_description, weather_icon) %&gt;%
    mutate(icon_url = get_icon_url(weather_icon))
  Sys.sleep(2) # пауза в 2 секунды, чтобы не выйти за лимиты API 
  return(res)
}

df &lt;- pro_map_df(city$name, get_city_weather)
</pre>
  <p id="PsYv"><strong>Шаг 5)</strong> Объединяем данные, делаем небольшие преобразования и загружаем итоговый датасет в гугл-таблицы:</p>
  <pre id="xvnJ" data-lang="r">city &lt;- left_join(city, df, by = c(&quot;city_eng&quot; = &quot;name&quot;)) 
city &lt;- left_join(city, weather_icons, by = c(&quot;weather_icon&quot; = &quot;icon_weather&quot;))
city &lt;- left_join(city, regions_key, by = c(&quot;region&quot;, &quot;city&quot;))
city$temp &lt;- round(city$temp) #округляем значения температуры до целых
# создаем метку аббревиатура города, температура и эмодзи-символ погоды
city$labels &lt;- glue::glue(&quot;{city$RNabbr}&lt;br&gt;{city$temp}°C {city$utf_code}&quot;)

# Сохраняем локально в csv данные о погоде на конкретную дату и время запроса
write_csv2(city, glue(&quot;data/city_{format(Sys.time(), &#x27;%d_%m_%Y_%H_%M&#x27;)}.csv&quot;))
# Обновляем гугл-таблицу
write_sheet(city, ss = &quot;ID_гугл-таблицы&quot;, sheet = &quot;city&quot;)
</pre>
  <p id="lOD0"><strong>Обновляемая гугл-таблица с данными о погоде, которую используем как источник данных для Datawrapper:</strong></p>
  <p id="6S0e"><a href="https://docs.google.com/spreadsheets/d/1wDqElULkz4Eycz03q8CmtFTi0oRO4kYan_MEkkRZABU/edit?usp=sharing" target="_blank">https://docs.google.com/spreadsheets/d/1wDqElULkz4Eycz03q8CmtFTi0oRO4kYan_MEkkRZABU/edit?usp=sharing</a></p>
  <p id="xRAg"><strong>Полный R-скрипт:</strong></p>
  <pre id="fx6W" data-lang="r">library(tidyverse)
library(owmr)
library(purrrgress)
library(glue)
library(googlesheets4)
library(here)

# проходим авторизацию через сервисный аккаунт Google Cloud
# см. инструкцию https://habr.com/ru/post/488756/
# API-key OpenWeatherMap

gs4_auth(path = &quot;_ваши_данные_.json&quot;)
owmr_settings(&quot;_ваш_API_key_&quot;)

# Загрузка данных
weather_icons &lt;- read_csv(&quot;weather_icons.csv&quot;)
regions &lt;- read_csv2(&quot;regions.csv&quot;)
regions_key &lt;- read_csv(&quot;regions_keys.csv&quot;)
city &lt;- read_csv(&quot;city_admin.csv&quot;)

# Текущая погода по административным центрам
get_city_weather &lt;- function(city) {
  res &lt;- get_current(city, units = &quot;metric&quot;, lang = &quot;RU&quot;) %&gt;%
    owmr_as_tibble() %&gt;%
    mutate(name = city) %&gt;%
    select(name, dt_txt, temp, temp_min, 
           temp_max, weather_id, 
           weather_main, weather_description, weather_icon) %&gt;%
    mutate(icon_url = get_icon_url(weather_icon))
  Sys.sleep(2) # пауза, чтобы не выйти за лимиты запросов API
  return(res)
}

df &lt;- pro_map_df(city$city_eng, get_city_weather)

city &lt;- left_join(city, df, by = c(&quot;city_eng&quot; = &quot;name&quot;)) 
city &lt;- left_join(city, weather_icons, by = c(&quot;weather_icon&quot; = &quot;icon_weather&quot;))
city &lt;- left_join(city, regions_key, by = c(&quot;region&quot;, &quot;city&quot;))
city$temp &lt;- round(city$temp)
city$labels &lt;- glue::glue(&quot;{city$RNabbr}&lt;br&gt;{city$temp}°C {city$utf_code}&quot;)

# Сохраняем локально в csv данные о погоде на конкретную дату и время запроса
write_csv2(city, glue(&quot;data/city_{format(Sys.time(), &#x27;%d_%m_%Y_%H_%M&#x27;)}.csv&quot;))
# Обновляем гугл-таблицу
write_sheet(city, ss = &quot;ID гугл-таблицы&quot;, sheet = &quot;city&quot;)</pre>
  <h3 id="jAam">Создаем плиточную карту РФ в Datawrapper</h3>
  <p id="R9xa">Шаг 1) Открываем <a href="https://app.datawrapper.de/" target="_blank">Datawrapper</a>, в меню выбираем создать новую карту (Create Map) и выбираем тип карты &quot;Choropleth map&quot;, через поиск находим плиточный вариант карты для России (Russia &gt;&gt; Regions (squares)):</p>
  <figure id="tHR1" class="m_column">
    <img src="https://img3.teletype.in/files/e8/2a/e82a81a6-6560-4247-9bb1-e5d8fecac03a.png" width="1159" />
  </figure>
  <p id="EP3u">Шаг 2) Указываем, что наши данные в виде ссылки на внешний источник данных Link external dataset</p>
  <figure id="xhfE" class="m_original">
    <img src="https://img3.teletype.in/files/6e/a0/6ea0f6b1-cbb0-4714-86a0-3c5bee3c3c01.png" width="639" />
  </figure>
  <p id="MrM0">Вставляем ссылку на гугл-таблицу (см. 5 шаг выше). Если все ОК, то напротив будет зеленая галочка. Выбираем пункт Use Datawrapper server и нажимаем кнопку Connect:</p>
  <figure id="xtd0" class="m_original">
    <img src="https://img3.teletype.in/files/65/77/65779c7e-d8cf-447a-83a2-d37189d00090.png" width="492" />
  </figure>
  <p id="UNjS">Убеждаемся, что данные успешно загрузились:</p>
  <figure id="EdnF" class="m_column">
    <img src="https://img3.teletype.in/files/e9/a0/e9a0a68a-27f4-4bad-be3a-65afd361d0da.png" width="1711" />
  </figure>
  <p id="9y5j">Шаг 3) Настраиваем нашу визуализацию (плиточную карту). Выбираем столбец (переменную, которая будет кодировать цвет плиток) — temp (1), выбираем палитру (2), тип палитры (3), а также указываем дополнительные атрибуты палитры (4) — количество интервалов, максимальное и минимальные значения:</p>
  <figure id="KmmZ" class="m_column">
    <img src="https://img1.teletype.in/files/4e/d6/4ed6481b-ecf7-4815-8376-7b7a524726b4.png" width="1325" />
  </figure>
  <p id="Ae4q">Важно изменить направление цветов палитры, чтобы положительным значениям температуры соответствовали оттенки красного, а отрицательным — синего: нажмите на ключ, затем на кнопку Reverse:</p>
  <figure id="5znp" class="m_column">
    <img src="https://img4.teletype.in/files/b5/9b/b59b7671-e89c-43be-9fd8-5f588d541a5a.png" width="1125" />
  </figure>
  <p id="TbFW"></p>
  <p id="dsoC">На вкладке Annotate напишите заголовок визуализации, а также задайте метки для плиточек регионов. Для этого активируйте переключатель Show labels, выберите столбец (переменную) labels, в котором у нас хранятся метки регионов, температура и эмодзи-символ погоды.</p>
  <figure id="kacm" class="m_column">
    <img src="https://img4.teletype.in/files/7a/cc/7acce474-38c3-4704-abbd-72693e1ec2bc.png" width="1192" />
  </figure>
  <p id="TyFU">Попробуйте далее самостоятельно дооформить визуализацию: добавить описание, автора, источник данных, ссылку на источник данных, определить возможные размеры плиточной карты и т.п. После этого переходите к шагу публикации визуализации -- получения ссылки на нее (вкладка Publish&amp;Embed). </p>
  <p id="8rDx"></p>
  <p id="hSFA"><strong>Финальный вариант плиточной карты эмодзи-погоды в России:</strong></p>
  <figure id="0qji" class="m_custom">
    <iframe src="https://datawrapper.dwcdn.net/Lugge/9/"></iframe>
  </figure>
  <p id="UHTd"><strong>Мой телеграм-канал: <a href="https://t.me/weekly_charts" target="_blank">https://t.me/weekly_charts</a></strong></p>

]]></content:encoded></item></channel></rss>