Друкарня від WE.UA

Створюємо стовпчикові графіки за допомогою plotly

Всіх вітаю! У цій статті пропоную вам зануритися у графіки та візуалізацію на Python за допомогою plotly. На цей раз ми втілимо стовпчикові графіки прослуховувань різних реп виконавців за місяць та графік з оцінками деяких їхніх альбомів за сайтом AOTY.

Підготовка

Встановлення plotly

Windows:

pip install plotly

MacOS:

pip3 install plotly

Linux:

pip install plotly

Створення списків з даними

Імпортуємо бібліотеку:

import plotly.graph_objects as go

Спершу нам треба створити список із значеннями, щоб потім їх візуалізувати. Дані про кількість прослуховувань за місяць були взяті зі Spotify.

Отже, ось наші готові дані:

x = ["JAY-Z", "Eminem", "50 Cent", "Kendrick Lamar", "Lil Wayne", "Future", "J. Cole", "A$AP Rocky", "Nas",
     "Travis Scott", "21 Savage", "Pusha T", "Tyler, The Creator", "Lil Baby", "Dr. Dre", "Snoop Dogg", "2Pac",
     "The Notorious B.I.G.", "Wiz Khalifa", "Central Cee"]

y = [40520489, 73310969, 46514936, 74929387, 48226508, 54879735, 39121626, 47108369, 9384635, 60529505, 41217352,
     5574622, 39509505, 31399992, 24295716, 31792147, 28141092, 26072294, 43335258, 24837881]

Етапи створення візуалізації

Створення загального графіка

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

Ось повний код нашого першого графіка:

import plotly.graph_objects as go


x = ["JAY-Z", "Eminem", "50 Cent", "Kendrick Lamar", "Lil Wayne", "Future", "J. Cole", "A$AP Rocky", "Nas",
     "Travis Scott", "21 Savage", "Pusha T", "Tyler, The Creator", "Lil Baby", "Dr. Dre", "Snoop Dogg", "2Pac",
     "The Notorious B.I.G.", "Wiz Khalifa", "Central Cee"]

y = [40520489, 73310969, 46514936, 74929387, 48226508, 54879735, 39121626, 47108369, 9384635, 60529505, 41217352,
     5574622, 39509505, 31399992, 24295716, 31792147, 28141092, 26072294, 43335258, 24837881]

bar_figure = go.Figure(data=[go.Bar(x=x, y=y)])
bar_figure.update_layout(title_text="Топ 20 реп виконавців")
bar_figure.show()

Тут ми створюємо сам графік із стовпців та вказуємо значення x та y:

bar_figure = go.Figure(data=[go.Bar(x=x, y=y)])

За допомогою метода update_layout() вказуэмо заголовок:

bar_figure.update_layout(title_text="Топ 20 реп виконавців")

Відображаємо створений графік:

bar_figure.show()

Ось результат:

Наш перший графік

Графік вийшов чудовим, але я думаю слід додати йому інший колір та тему. Тому змінюємо колір стовпців на відтінок синього за допомогою параметра marker_color:

bar_figure = go.Figure(data=[go.Bar(x=x, y=y, marker_color="#409151")])

Тепер додаємо темну тему за допомогою параметра template у методі update_layout():

bar_figure.update_layout(title_text="Топ 20 реп виконавців", template="plotly_dark")

Тема plotly_dark — це стандартна темна тема для plotly.

Ось видозмінений код:

import plotly.graph_objects as go


x = ["JAY-Z", "Eminem", "50 Cent", "Kendrick Lamar", "Lil Wayne", "Future", "J. Cole", "A$AP Rocky", "Nas",
     "Travis Scott", "21 Savage", "Pusha T", "Tyler, The Creator", "Lil Baby", "Dr. Dre", "Snoop Dogg", "2Pac",
     "The Notorious B.I.G.", "Wiz Khalifa", "Central Cee"]

y = [40520489, 73310969, 46514936, 74929387, 48226508, 54879735, 39121626, 47108369, 9384635, 60529505, 41217352,
     5574622, 39509505, 31399992, 24295716, 31792147, 28141092, 26072294, 43335258, 24837881]

bar_figure = go.Figure(data=[go.Bar(x=x, y=y, marker_color="#409151")])
bar_figure.update_layout(title_text="Топ 20 реп виконавців", template="plotly_dark")
bar_figure.show()

Результат:

Покращений графік

Категоризація графіка

Також ми можемо дещо відредагувати наш графік. Зараз він виглядає красивим, але водночас є дуже простим. Я пропоную розділити графік на категорії, щоб виконавці, що мають сорок і більше мільйонів прослуховувань були позначені окремою категорією від тих, що мають менше сорока мільйонів прослуховувань.

Ось код, який оновить наш графік:

part_one_names = ["JAY-Z", "Eminem", "50 Cent", "Kendrick Lamar", "Lil Wayne", "Future", "A$AP Rocky",
                  "Travis Scott", "21 Savage", "Wiz Khalifa"]

part_one_data = [40520489, 73310969, 46514936, 74929387, 48226508, 54879735, 47108369, 60529505, 41217352, 43335258]

part_two_names = ["J. Cole", "Nas", "Pusha T", "Tyler, The Creator", "Lil Baby", "Dr. Dre", "Snoop Dogg", "2Pac",
                  "The Notorious B.I.G.", "Central Cee"]
part_two_data = [39121626, 9384635, 5574622, 39509505, 31399992, 24295716, 31792147, 28141092, 26072294, 24837881]

bar_figure = go.Figure(data=[
     go.Bar(name=">= 40 мільйонів", x=part_one_names, y=part_one_data, marker_color="#409151"),
     go.Bar(name="< 40 мільйонів", x=part_two_names, y=part_two_data, marker_color="#8ba955")
])

bar_figure.update_layout(title_text="Топ 20 реп виконавців", template="plotly_dark")
bar_figure.show()

Результат:

Графік, що розділений на дві категорії

Згрупований графік

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

Оцінки альбомів взяті із сайту AOTY.

Отже, ось зібрані дані:

albums_titles = ["The Blueprint", "The Eminem Show", "Get Rich or Die Tryin'",
                 "To Pimp a Butterfly", "Tha Carter II", "DS2",
                 "2014 Forest Hills Drive"]

authors = ["JAY-Z", "Eminem", "50 Cent", "Kendrick Lamar", "Lil Wayne", "Future", "J. Cole"]

critic_scores = [85, 75, 74, 95, 79, 77, 69]
user_scores = [88, 82, 77, 95, 82, 80, 79]

Ось повний код:

albums_titles = ["The Blueprint", "The Eminem Show", "Get Rich or Die Tryin'",
                 "To Pimp a Butterfly", "Tha Carter II", "DS2",
                 "2014 Forest Hills Drive"]

authors = ["JAY-Z", "Eminem", "50 Cent", "Kendrick Lamar", "Lil Wayne", "Future", "J. Cole"]

critic_scores = [85, 75, 74, 95, 79, 77, 69]
user_scores = [88, 82, 77, 95, 82, 80, 79]

bar_figure = go.Figure(data=[
     go.Bar(name="Critic score", x=albums_titles, y=critic_scores,
            marker_color="#a2767f",
            text=authors,
            textposition="inside"),
     go.Bar(name="User score", x=albums_titles, y=user_scores,
            marker_color="#d9898c",
            text=authors,
            textposition="inside")])

bar_figure.update_layout(title_text="Оцінки альбомів на AOTY", template="plotly_dark", barmode="group")
bar_figure.show()

У цьому графіку необхідно також додати й псевдоніми виконавців, тому спершу нам треба вказати, звідки саме ми будемо брати псевдоніми.

Для цього, у plotly є параметр text:

bar_figure = go.Figure(data=[
     go.Bar(name="Critic score", x=albums_titles, y=critic_scores,
            marker_color="#a2767f", 
            text=authors, 
            textposition="inside"),
     go.Bar(name="User score", x=albums_titles, y=user_scores, 
            marker_color="#d9898c",
            text=authors, 
            textposition="inside")])

Отже, ми взяли псевдоніми зі списку authors, але тепер нам треба подумати над їхнім розташуванням на графіку. Для розташування псевдонімів виконавців ми використаємо параметр textposition, де вказали їх положення всередині стовпців (передали значення inside).

Тут, окрім заголовку та теми, надаємо значення “group“ параметру barmode, щоб отримати згрупований графік:

bar_figure.update_layout(title_text="Оцінки альбомів на AOTY", template="plotly_dark", barmode="group")

Результат:

Оцінки альбомів на AOTY

Складений графік

Крім згруповування, ми ще можемо скласти графік так, щоб стовпці були один на одному. Для втілення такого типу графіка варто надати значення “stack” у параметр barmode.

Ось повний код:

albums_titles = ["The Blueprint", "The Eminem Show", "Get Rich or Die Tryin'",
                 "To Pimp a Butterfly", "Tha Carter II", "DS2",
                 "2014 Forest Hills Drive"]

authors = ["JAY-Z", "Eminem", "50 Cent", "Kendrick Lamar", "Lil Wayne", "Future", "J. Cole"]

critic_scores = [85, 75, 74, 95, 79, 77, 69]
user_scores = [88, 82, 77, 95, 82, 80, 79]

bar_figure = go.Figure(data=[
     go.Bar(name="Critic score", x=albums_titles, y=critic_scores,
            marker_color="#f4b176",
            text=authors,
            textposition="inside"),
     go.Bar(name="User score", x=albums_titles, y=user_scores,
            marker_color="#c1be7f",
            text=authors,
            textposition="inside")])

bar_figure.update_layout(title_text="Оцінки альбомів на AOTY", template="plotly_dark", barmode="stack")
bar_figure.show()

Резульат:

Складений графік

Висновок

У даній статті ми навчилися створювати стовпчикові графіки різного типу (категоризовані, згруповані, складені) та стилізовувати їх на різні смаки. Дякую за увагу!

Список джерел
  1. JAY-Z - кількість прослуховувань за місяць
  2. Eminem - кількість прослуховувань за місяць
  3. 50 Cent - кількість прослуховувань за місяць
  4. Kendrick Lamar - кількість прослуховувань за місяць
  5. Lil Wayne - кількість прослуховувань за місяць
  6. Future - кількість прослуховувань за місяць
  7. J. Cole - кількість прослуховувань за місяць
  8. A$AP Rocky - кількість прослуховувань за місяць
  9. Nas - кількість прослуховувань за місяць
  10. Travis Scott - кількість прослуховувань за місяць
  11. 21 Savage - кількість прослуховувань за місяць
  12. Pusha T - кількість прослуховувань за місяць
  13. Tyler, The Creator - кількість прослуховувань за місяць
  14. Lil Baby - кількість прослуховувань за місяць
  15. Dr. Dre - кількість прослуховувань за місяць
  16. Snoop Dogg - кількість прослуховувань за місяць
  17. 2Pac - кількість прослуховувань за місяць
  18. The Notorious B.I.G. - кількість прослуховувань за місяць
  19. Wiz Khalifa - кількість прослуховувань за місяць
  20. JAY-Z - The Blueprint. Оцінка альбому
  21. Eminem - The Eminem Show. Оцінка альбому
  22. Kendrick Lamar - To Pimp a Butterfly. Оцінка альбому
  23. 50 Cent - Get Rich or Die Tryin'. Оцінка альбому
  24. Lil Wayne - Tha Carter II. Оцінка альбому
  25. Future - DS 2. Оцінка альбому
  26. J. Cole - 2014 Forest Hills Drive. Оцінка альбому

Статті про вітчизняний бізнес та цікавих людей:

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Magnifique numérique
Magnifique numérique@nocturnal_reader we.ua/nocturnal_reader

Нічний читач

54Довгочити
654Прочитання
18Підписники
Підтримати
На Друкарні з 14 липня

Більше від автора

  • Клас itemgetter() у модулі operator

    Всіх вітаю! У даній статті ми продовжимо тему спеціальних властивостей словників у Python. На цей раз ми поговоримо про модуль operator та його клас itemgetter(), яка дозволяє працювати зі списками та словниками у Python.

    Теми цього довгочиту:

    Програмування
  • Метод split() у Python

    Всіх вітаю! Сьогодні ми розглянемо метод split() у Python та побачимо, як використовувати її на прикладах.

    Теми цього довгочиту:

    Програмування
  • Методи lower(), upper(), islower() та isupper() у Python

    Всіх вітаю! У цій невеличкій статті ми познайомимося із одразу чотирма методами для зміни регістру рядків у Python. Конкретно сьогодні ми ознайомимося із методами lower(), upper(), islower() та isupper().

    Теми цього довгочиту:

    Програмування

Це також може зацікавити:

  • 0.1. Чому і що буду писати?

    замість передмови, або спроби пояснення чому я взагалі вирішив щось писати і короткий огляд тем майбутніх довгочитів

    Теми цього довгочиту:

    Щось Цікаве
  • Розробка ігор для Atari 2600. Частина 1.

    Цією публікацією хочу розпочати серію статей про программування для ігрової консолі Atari 2600. Atari випустила її у 1977 році, і це одна з перших ігрових систем, побудована на мікропроцесорі та картриджах. В першій статті малюємо на Атарі прапор України

    Теми цього довгочиту:

    Програмування

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити:

  • 0.1. Чому і що буду писати?

    замість передмови, або спроби пояснення чому я взагалі вирішив щось писати і короткий огляд тем майбутніх довгочитів

    Теми цього довгочиту:

    Щось Цікаве
  • Розробка ігор для Atari 2600. Частина 1.

    Цією публікацією хочу розпочати серію статей про программування для ігрової консолі Atari 2600. Atari випустила її у 1977 році, і це одна з перших ігрових систем, побудована на мікропроцесорі та картриджах. В першій статті малюємо на Атарі прапор України

    Теми цього довгочиту:

    Програмування