Артефакт визуализации данных Python — быстрое начало работы с pycharts

визуализация данных

предисловие

Все мы знаем инструмент визуализации на питонеmatplotlib, но он статичен. Позже нашелpyechartsМодуль прост в использовании, много видов визуализации, в его основе лежитEchartsразвивающийся.

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

Давайте быстро взглянем на следующееpyechartsи основное использование:

✨ Особенности

  • Лаконичный дизайн API, простота использования, поддержка цепочек вызовов
  • Включает в себя более 30 общих диаграмм, все, что вам нужно
  • Поддерживает основные среды ноутбуков, Jupyter Notebook и JupyterLab.
  • Может быть легко интегрирован в основные веб-фреймворки, такие как Flask, Django.
  • Очень гибкие элементы конфигурации, которые можно легко сопоставить для создания красивых диаграмм.
  • Подробная документация и примеры, которые помогут разработчикам быстрее приступить к работе над проектами.
  • До 400+ карт, обеспечивающих мощную поддержку визуализации географических данных

✨ Установить

1pip install pyecharts

Примечание. Существуют две версии диаграмм: v0.5.X и V1.0.X полностью несовместимы, а автор версии v0.5.X больше не поддерживается, используйте V1.0.X.

Гистограмма: Столбчатая/гистограмма

Модуль, соответствующий гистограмме, — это Bar. Кроме того, можно установить глобальную конфигурацию и элементы конфигурации серии. Элементы конфигурации основаны на параметрах

Образец кода:

1# coding: utf-8
 2from example.commons import Faker
 3from pyecharts import options as opts
 4from pyecharts.charts import Bar
 5
 6def bar_base():
 7
 8    bar = Bar(init_opts=opts.InitOpts(page_title="bar页面"))  # 设置html页面标题
 9    # bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])  # 设置x轴的参数
10
11    bar.add_xaxis(Faker.choose())
12    bar.add_yaxis("A", Faker.values())
13    bar.add_yaxis("B", Faker.values())
14
15    # 设置全局配置项,可选
16    bar.set_global_opts(opts.TitleOpts(title="主标题", subtitle="副标题"))
17    # render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件
18    bar.render("bar.html")  # 也可以自己指定文件名
19
20if __name__ == "__main__":
21    bar_base()

После запуска кода в текущем каталоге будет сгенерирован файл"бар.html"файл, мы открываем его в браузере. Схема эффекта выглядит следующим образом:

bar.html
bar.html
,

Поддержка созданной страницы — нажмите, чтобы отменить показ серии

只显示A
показывать только А

В дополнение к вышеперечисленным методам использования все методы pycharts поддерживают цепные вызовы!

Отразить ось XY

код показывает, как показано ниже:

 1 def bar_reversal_axis() -> Bar:
 2
 3    # pyecharts 所有方法均支持链式调用。
 4    c = (
 5        Bar(init_opts=opts.InitOpts(page_title="bar页面"))
 6        .add_xaxis(Faker.choose())
 7        .add_yaxis("商家A", Faker.values())
 8        .add_yaxis("商家B", Faker.values())
 9        .reversal_axis()
10        .set_global_opts(toolbox_opts=opts.ToolboxOpts())  # 设置工具箱配置项
11        .set_series_opts(label_opts=opts.LabelOpts(position="right"))  # 系列配置项
12        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-翻转 XY 轴"))  # 全局配置项
13    )
14    return c
15
16
17if __name__ == "__main__":
18    bar_reversal_axis().render("bar.html")

Схема эффекта выглядит следующим образом:

翻转 XY 轴
Отразить ось XY

Частично сложенные данные

Ряды с одинаковым значением стека на одной и той же оси категорий могут быть сложены

Например, код для укладки A и B выглядит следующим образом:

 1 def bar_stack1() -> Bar:
 2    c = (
 3        Bar()
 4        .add_xaxis(Faker.choose())
 5
 6        # 数据堆叠,同个类目轴上系列配置相同的 stack 值可以堆叠放置。
 7        # stack: Optional[str] = None,
 8        .add_yaxis("A", Faker.values(), stack="stack1")
 9        .add_yaxis("B", Faker.values(), stack="stack1")
10        .add_yaxis("C", Faker.values())
11        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
12        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆叠数据(部分)"))
13    )
14    return c

部分堆叠数据
Частично сложенные данные

Элемент конфигурации масштабирования области

1 def bar_datazoom_slider() -> Bar:
 2    c = (
 3        Bar(init_opts=opts.InitOpts(page_title="bar页面"))
 4        .add_xaxis(Faker.days_attrs)
 5        .add_yaxis("商家A", Faker.days_values)
 6        .set_global_opts(
 7            title_opts=opts.TitleOpts(title="Bar-DataZoom(slider-水平)"),
 8            datazoom_opts=[opts.DataZoomOpts(type_="slider",)]
 9        )
10    )
11    return c

Схема эффекта выглядит следующим образом:

区域缩放配置
Конфигурация масштабирования области

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

源码
исходный код

Среди них основные используемые параметры имеют следующие значения:

1 type_: str = "slider",  # 组件类型,可选 "slider", "inside"
2 # 拖动时,是否实时更新系列的视图。如果设置为 false,则只在拖拽结束的时候更新。
3 is_realtime: bool = True,
4
5 # 布局方式是横还是竖。可选值为:'horizontal', 'vertical'
6 orient: str = "horizontal",

Зная значение параметров, мы можем попробовать эффект

Например, если мы хотим изменить макет масштабирования области на вертикальный, изменитеorientопределяется какverticalВсе, код отображаться не будет, можете попробовать сами!

Схема эффекта выглядит следующим образом:

image

Тепловая карта: тепловая карта

Тепловая карта в основном выражает размер значения через цвет и должна использоваться с компонентом visualMap. Две оси категорий должны использоваться в декартовой системе координат.

Функция метода, используемая тепловой картой,add_yaxis, ниже приводится описание использования функции:

i 1def add_yaxis(
 2    # 系列名称,用于 tooltip 的显示,legend 的图例筛选。
 3    series_name: str,
 4
 5    # Y 坐标轴数据
 6    yaxis_data: Sequence,
 7
 8    # 系列数据项
 9    value: Sequence,
10
11    # 是否选中图例
12    is_selected: bool = True,
13
14    # 使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。
15    xaxis_index: Optional[Numeric] = None,
16
17    # 使用的 y 轴的 index,在单个图表实例中存在多个 y 轴的时候有用。
18    yaxis_index: Optional[Numeric] = None,
19
20    # 标签配置项,参考 `series_options.LabelOpts`
21    label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(),
22
23    # 标记点配置项,参考 `series_options.MarkPointOpts`
24    markpoint_opts: Union[opts.MarkPointOpts, dict, None] = None,
25
26    # 标记线配置项,参考 `series_options.MarkLineOpts`
27    markline_opts: Union[opts.MarkLineOpts, dict, None] = None,
28
29    # 提示框组件配置项,参考 `series_options.TooltipOpts`
30    tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,
31
32    # 图元样式配置项,参考 `series_options.ItemStyleOpts`
33    itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,
34
35

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

import random
from example.commons import Faker
from pyecharts import options as opts
from pyecharts.charts import HeatMap


def heatmap_base() -> HeatMap:
    value = [[i, j, random.randint(0, 50)] for i in range(24) for j in range(7)]
    c = (
        HeatMap()
        .add_xaxis(Faker.clock)
        .add_yaxis("series", Faker.week, value)
        .set_global_opts(title_opts=opts.TitleOpts(title="HeatMap-基本示例"),
                         visualmap_opts=opts.VisualMapOpts(), )
    )

    return c


if __name__ == "__main__":
    heatmap_base().render("heatMap.html")

Схема эффекта выглядит следующим образом:

热力图
Тепловая карта

WordCloud: граф облака слов

Функция метода, используемая в карте облака слов,add, способ использования следующий:

 1 def add(
 2    # 系列名称,用于 tooltip 的显示,legend 的图例筛选。
 3    series_name: str,
 4
 5    # 系列数据项,[(word1, count1), (word2, count2)]
 6    data_pair: Sequence,
 7
 8    # 词云图轮廓,有 'circle', 'cardioid', 'diamond', 'triangle-forward', 'triangle', 'pentagon', 'star' 可选
 9    shape: str = "circle",
10
11    # 单词间隔
12    word_gap: Numeric = 20,
13
14    # 单词字体大小范围
15    word_size_range=None,
16
17    # 旋转单词角度
18    rotate_step: Numeric = 45,
19
20    # 提示框组件配置项,参考 `series_options.TooltipOpts`
21    tooltip_opts: Union[opts.TooltipOpts, dict, None] = None,
22
23

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

# coding: utf-8
import random

from pyecharts.charts import WordCloud
from pyecharts import options as opts

words = [
    ("火箭", 10000),
    ("勇士库里", 8888),
    ("在你写这个教程之前,我已经会用了", 6181),
    ("哈登", 6386),
    ("金州拉文", 5055),
    ("杜兰特", 6467),
    ("戳眼", 2244),
    ("NBA", 1868),
    ("季后赛", 1484),
    ("约老师", 1112),
    ("利拉德", 865),
    ("双卡双待", 847),
    ("字母歌MVP", 5582),
    ("卡哇伊", 555),
    ("猛龙", 550),
    ("大帝", 462),
    ("西蒙斯不投三分", 366),
    ("JB", 360),
    ("科尔垃圾", 282),
    ("格林公式", 273),
    ("欧文", 2650),
]


def wordcloud_base() -> WordCloud:
    c = (
        WordCloud()
        .add("", words, word_size_range=[20, 50], shape="diamond", word_gap=10)
        .set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-shape-diamond"))
    )
    return c


if __name__ == "__main__":
    wordcloud_base().render("wordCloud.html")

Схема эффекта выглядит следующим образом:

NBA词云图
Облако слов НБА

сохранить как изображение

Несколько методов генерации графики, о которых мы говорили ранее, наконец, сохраняются в виде файлов html, а pyecharts также предоставляет способ сохранения в виде изображений.

необходимо установитьsnapshot_selenium, и вам нужно сохранить драйвер браузера по путиcheromdriver.exeдобавить в переменную окружения

1pip install snapshot_selenium

Пример кода выглядит следующим образом:

1 # coding: utf-8
2 import random
3
4 from pyecharts.charts import WordCloud
5 from pyecharts import options as opts
6 from snapshot_selenium import snapshot as driver
7 from pyecharts.render import make_snapshot
8
9 words = [
10    ("火箭", 10000),
11    ("勇士库里", 8888),
12    ("在你写这个教程之前,我已经会用了", 6181),
13    ("哈登", 6386),
14    ("金州拉文", 5055),
15    ("杜兰特", 6467),
16    ("戳眼", 2244),
17    ("NBA", 1868),
18    ("季后赛", 1484),
19    ("约老师", 1112),
20    ("利拉德", 865),
21    ("双卡双待", 847),
22    ("字母歌MVP", 5582),
23    ("卡哇伊", 555),
24    ("猛龙", 550),
25    ("大帝", 462),
26    ("西蒙斯不投三分", 366),
27    ("JB", 360),
28    ("科尔垃圾", 282),
29    ("格林公式", 273),
30    ("欧文", 2650),
31]
32
33
34 def wordcloud_base() -> WordCloud:
35    c = (
36        WordCloud()
37        .add("", words, word_size_range=[20, 50], shape="diamond", word_gap=10)
38        .set_global_opts(title_opts=opts.TitleOpts(title="WordCloud-shape-diamond"))
39    )
40    return c
41
42
43 if __name__ == "__main__":
44    make_snapshot(driver, wordcloud_base().render(), "wordcloud.png")
45    # wordcloud_base().render("wordCloud.html")

Наконец, файл будет сгенерирован в текущем каталогеwordcloud.pngкартинка

Суммировать

1. В соответствии с графикой, которую вы хотите сделать, импортируйте соответствующие пакеты.

2. Выполните основные настройки графика и создайте объект графика

3. Вам нужно понять значение параметров в функции под объектом диаграммы и как ее использовать

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

5. Используйте метод render() для отчета и сохранения диаграммы.

В pyecharts также есть много интересных 3D-диаграмм и картографических карт.Из-за ограниченного места в следующей части мы продолжим знакомить с геймплеем системы карт. Добро пожаловать в официальный аккаунт: программирование на Python и настоящий бой!

Рекомендуемое чтение

Введение в JS, обратный Python Crawler

Используйте python для создания стены аватара вашего друга WeChat одним щелчком мыши

Сочетание визуализации круговых диаграмм и WeChat

Артефакт визуализации данных Python — быстрое начало работы с pycharts