数据分析之matplotlib扩展篇——pyecharts绘图

pyecharts介绍

一. 简介

二. 特性

  • 简洁的 API 设计,使用如丝滑般流畅,支持链式调用
  • 囊括了 30+ 种常见图表,应有尽有
  • 支持主流 Notebook 环境,Jupyter Notebook 和 JupyterLab
  • 可轻松集成至 Flask,Django 等主流 Web 框架
  • 高度灵活的配置项,可轻松搭配出精美的图表
  • 详细的文档和示例,帮助开发者更快的上手项目
  • 多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持

三. 版本

四. 安装

  • 安装 v1 以上版本

pip/pip3 install pyecharts -U

  • 如果需要安装 0.5.11 版本的开发者,可以使用

pip/pip3 install pyecharts==0.5.11

在这里插入图片描述
五. 快速开始

from pyecharts.charts import Bar
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
# render 会生成本地 HTML 文件,默认会在当前目录生成 render.html 文件
# 也可以传入路径参数,如 bar.render("mycharts.html")
bar.render()

在这里插入图片描述

pyecharts 所有方法均支持链式调用

from pyecharts.charts import Bar
bar = (
    Bar()
    .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
    .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
)
bar.render()

使用 options 配置项,在 pyecharts 中,一切皆 Options

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

# V1 版本开始支持链式调用
# 你所看到的格式其实是 `black` 格式化以后的效果
# 可以执行 `pip install black` 下载使用
bar = (
    Bar()
    .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
    .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
    .set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
    # 或者直接使用字典参数
    # .set_global_opts(title_opts={"text": "主标题", "subtext": "副标题"})
)
bar.render()

# 不习惯链式调用的开发者依旧可以单独调用方法
bar = Bar()
bar.add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
bar.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
bar.set_global_opts(title_opts=opts.TitleOpts(title="主标题", subtitle="副标题"))
bar.render()

在这里插入图片描述

使用pyecharts绘制常见图表

1. 柱状图

Bar-基本示例

from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar

def bar_base() -> Bar:
    c = (
        Bar()
        .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
        .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
        .add_yaxis("商家B", [10, 25, 8, 60, 20, 80])
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
    )
    return c.render("0.html")
bar_base()

在这里插入图片描述Bar-渐变圆柱

def bar_border_radius():
    c = (
        Bar()
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values(), category_gap="60%")
        .set_series_opts(itemstyle_opts={
            "normal": {
                "color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
                    offset: 0,
                    color: 'rgba(0, 244, 255, 1)'
                }, {
                    offset: 1,
                    color: 'rgba(0, 77, 167, 1)'
                }], false)"""),
                "barBorderRadius": [30, 30, 30, 30],
                "shadowColor": 'rgb(0, 160, 221)',
            }})
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-渐变圆柱"))
    )
    return c.render("1.html")
bar_border_radius()

在这里插入图片描述

Bar-显示 ToolBox

from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar


def bar_toolbox() -> Bar:
    c = (
        Bar()
        .add_xaxis(["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"])
        .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
        .add_yaxis("商家B", [10, 25, 8, 60, 20, 80])
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Bar-显示 ToolBox"),
            toolbox_opts=opts.ToolboxOpts(),
            legend_opts=opts.LegendOpts(is_show=False)
        )
    )
    return c.render("2.html")
bar_toolbox()

在这里插入图片描述

Bar-翻转 XY 轴

def bar_reversal_axis() -> Bar:
    c = (
        Bar()
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
        .reversal_axis()
        .set_series_opts(label_opts=opts.LabelOpts(position="right"))
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-翻转 XY 轴"))
    )
    return c.rebder("3.html")

在这里插入图片描述

Bar-堆叠数据(全部)

def bar_stack0() -> Bar:
    c = (
        Bar()
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values(), stack="stack1")
        .add_yaxis("商家B", Faker.values(), stack="stack1")
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆叠数据(全部)"))
    )
    return c.render("4.html")

在这里插入图片描述Bar-MarkPoint(指定类型)

def bar_markpoint_type() -> Bar:
    c = (
        Bar()
        .add_xaxis(Faker.choose())
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
        .set_global_opts(title_opts=opts.TitleOpts(title="Bar-MarkPoint(指定类型)"))
        .set_series_opts(
            label_opts=opts.LabelOpts(is_show=False),
            markpoint_opts=opts.MarkPointOpts(
                data=[
                    opts.MarkPointItem(type_="max", name="最大值"),
                    opts.MarkPointItem(type_="min", name="最小值"),
                    opts.MarkPointItem(type_="average", name="平均值"),
                ]
            ),
        )
    )
    return c.render"5.html")

在这里插入图片描述

2. 热力图
import random
from pyecharts.faker 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("series0", Faker.week, value)
        .set_global_opts(
            title_opts=opts.TitleOpts(title="HeatMap-基本示例"),
            visualmap_opts=opts.VisualMapOpts(),
        )
    )
    return c.render("6.html")
heatmap_base()

在这里插入图片描述

3. 折线图
import pyecharts.options as opts
from pyecharts.faker import  Faker
from pyecharts.charts import Line


def line_base() -> Line:
    c = (
        Line()
        .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
        .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
        .add_yaxis("商家B", [10, 25, 8, 60, 20, 80])
        .set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例"))
    )
    return c.render("7.html")
line_base()

在这里插入图片描述

4. 面积图
import pyecharts.options as opts
from pyecharts.charts import Line


def line_areastyle() -> Line:
    c = (
        Line()
        .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
        .add_yaxis(
            "商家A", [5, 20, 36, 10, 75, 90], areastyle_opts=opts.AreaStyleOpts(opacity=0.5)
        )
        .add_yaxis(
            "商家B", [10, 25, 8, 60, 20, 80], areastyle_opts=opts.AreaStyleOpts(opacity=0.5)
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="Line-面积图"))
    )
    return c.render("8.html")
line_areastyle()

在这里插入图片描述

5. 散点图
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Scatter


def scatter_base() -> Scatter:
    c = (
        Scatter()
        .add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"])
        .add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
        .set_global_opts(title_opts=opts.TitleOpts(title="Scatter-基本示例"))
    )
    return c.render("9.html")


scatter_base()

在这里插入图片描述

6. 层叠多图
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Bar, Line


def overlap_line_scatter() -> Bar:
    x = Faker.choose()
    bar = (
        Bar()
        .add_xaxis(x)
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
        .set_global_opts(title_opts=opts.TitleOpts(title="Overlap-line+scatter"))
    )
    line = (
        Line()
        .add_xaxis(x)
        .add_yaxis("商家A", Faker.values())
        .add_yaxis("商家B", Faker.values())
    )
    bar.overlap(line)
    return bar

overlap_line_scatter().render("10.html")

在这里插入图片描述

7. 日历图
import datetime
import random
from pyecharts import options as opts
from pyecharts.charts import Calendar


def calendar_base() -> Calendar:
    begin = datetime.date(2019, 1, 1)
    end = datetime.date(2019, 12, 31)
    data = [
        [str(begin + datetime.timedelta(days=i)), random.randint(1000, 25000)]
        for i in range((end - begin).days + 1)
    ]
    c = (
        Calendar()
        .add("", data, calendar_opts=opts.CalendarOpts(range_="2019"))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Calendar-2019年微信步数情况"),
            visualmap_opts=opts.VisualMapOpts(
                max_=20000,
                min_=500,
                orient="horizontal",
                is_piecewise=True,
                pos_top="230px",
                pos_left="100px",
            ),
        )
    )
    return c.render("11.html")
calendar_base()

在这里插入图片描述

8. 仪表盘
from pyecharts import options as opts
from pyecharts.charts import Gauge, Page


def gauge_base() -> Gauge:
    c = (
        Gauge()
        .add("", [("完成率", 66.6)])
        .set_global_opts(title_opts=opts.TitleOpts(title="Gauge-基本示例"))
    )
    return c.render("12.html")

在这里插入图片描述

9.饼图
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.charts import Pie


def pie_base() -> Pie:
    c = (
        Pie()
        .add("", [list(z) for z in zip(Faker.choose(), Faker.values())])
        .set_global_opts(title_opts=opts.TitleOpts(title="Pie-基本示例"))
        .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    )
    return c.render("13.html")

在这里插入图片描述

10. 世界地图
from pyecharts import options as opts
from pyecharts.charts import Map


def map_world() -> Map:
    value = [95.1, 23.2, 43.3, 66.4, 88.5]
    attr = ["China", "Canada", "Brazil", "Russia", "United States"]
    c = (
        Map()
        .add("商家A", [list(z) for z in zip(attr, value)], "world")
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Map-世界地图"),
            visualmap_opts=opts.VisualMapOpts(max_=200),
        )
    )
    return c.render("13.html")

map_world()

在这里插入图片描述

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


def map_world() -> Map:
    value = [95.1, 23.2, 43.3, 66.4, 88.5]
    attr = ["云南", "四川", "山西", "上海", "湖南"]
    c = (
        Map()
        .add("商家A", [list(z) for z in zip(attr, value)], "china")
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Map-中国地图"),
            visualmap_opts=opts.VisualMapOpts(max_=200),
        )
    )
    return c.render("14.html")

map_world()

在这里插入图片描述

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


def map_world() -> Map:
    value = [95.1, 23.2, 43.3, 66.4, 88.5]
    attr = ["昆明市", "曲靖市", "丽江市", "普洱市", "大理白族自治州"]
    c = (
        Map()
        .add("商家A", [list(z) for z in zip(attr, value)], "云南")
        .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Map-云南地图"),
            visualmap_opts=opts.VisualMapOpts(max_=200),
        )
    )
    return c.render("15.html")

map_world()

在这里插入图片描述

发布了60 篇原创文章 · 获赞 6 · 访问量 7778

猜你喜欢

转载自blog.csdn.net/qq_44205272/article/details/103210310