(萌新必看)python数据分析——pyecharts数据可视化

本文章内容仅供参考,思维导图如下:

一,Pycharts简介

1,Pyecharts的由来

(1)Echarts是一个由百度开源的基于js语言的数据可视化框架,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。

(2)由于python在数据分析领域的活跃,一个开发团队将echarts库移植到python中,命名为“pyecharts”。

(3)相较于matplotlib而言,pyecharts库绘制的图形种类更多,样式更精美、丰富。

2,官网和社区

Pyecharts团队提供了官网和社区。

其中官网有Pyecharts的使用文档,社区包含各种图形的项目案例代码和演示。

官网:pyecharts - A Python Echarts Plotting Library built with love.

社区:Document

3,Pyecharts的图形样例

(1)带有滑动条的柱形图

#导入模块
from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.faker import Faker

c = (
    Bar()
    .add_xaxis(Faker.days_attrs)
    .add_yaxis("超市A", Faker.days_values, color=Faker.rand_color())
    .set_global_opts(
        title_opts=opts.TitleOpts(title="带有滑动条的柱形图"),
                        datazoom_opts=opts.DataZoomOpts(),
)

 .render("带有滑动条的柱形图.html")
)

结果如下:

(2)带有时间轴的饼图

#导入模块
from pyecharts import options as opts
from pyecharts.charts import Pie, Timeline
from pyecharts.faker import Faker

attr = Faker.choose()
tl = Timeline()
for i in range(2015, 2020):

    pie= (   ##饼图
        Pie()
        .add(
            "某某",
            [list(z) for z in zip(attr, Faker.values())],
            rosetype="radius",
            radius=["30%", "55%"],
        )
        .set_global_opts(title_opts=opts.TitleOpts("某某{}年".format(i)))
)
    tl.add(pie, "{}年".format(i))
tl.render("带有时间轴的饼图.html")

结果如下:

(3)热力地图

#导入模块
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.faker import Faker
from pyecharts.globals import ChartType

c = (  //热力图
    Geo()
    .add_schema(maptype="广东")
    .add(
        "geo",
        [list(z) for z in zip(Faker.guangdong_city, Faker.values())],
        type_=ChartType.HEATMAP,
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
                visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="Geo-广东地图")
    )
    .render("geo_guangdong.html")
)

结果如下:

二,Pyecharts的基本用法

1,语法结构

c=(

    Bar()      

#每个图形由相应的类构成。

    .add_xaxis(Faker.choose())   

  #图形对象的各种方法(如添加x轴数据)均可以采用换行链式编程方法。

    .add_yaxis("A家店铺",Faker.values())        

    .add_yaxis("B家店铺",Faker.values())       

 #

    .set_global_opts(title_opts=opts.TitleOpts(title="Bark-Mark(指定类型)"))       

#全局配置项set_global_ops可以配置标题、坐标轴等通用的图形模块。

    .set_series_opts(       

#系列配置项set_series_opts可以配置和数据及图形相关的图表样式、文本样式、线条样式、标签样式。

        label_opts=opts.LabelOpts(is_show=False),       

#各子配置项中传入的对象均由Pyecharts中options包里定义好的类生成。

        markpoint_opts=opts.MarkPointOpts(

            data=[

                opts.MarkPointItem(type_="max",name="最大值"),

                opts.MarkPointItem(type_="min",name="最小值"),

                opts.MarkPointItem(type_="avg",name="平均值"),

            ]

        )

    )

    .render("bar_markpoint_tpye.html")     

  #代码的最后是图形渲染的方法,可以生成html文件,或是直接在jupyter中展示。

)

 2,使用pyecharts的注意事项

(1)pyecharts 本质上

在做的事情就是将 Echarts 的配置项由 Python dict 序列化为 JSON 格式,所以 pyecharts 支持什么格式的数据类型取决于 JSON 支持什么数据类型。这也就意味着在你将数据传入到 pyecharts 的时候,需要自行将数据格式转换成上述 Python 原生的数据格式。

(2)使用数据分析

大都需要使用 numpy/pandas,但是 numpy 的 numpy.int64/numpy.int32/... 等数据类型并不继承自 Python.int。这就需要我们在使用Pyecharts画图之前要将数据类型转化为【int\float】类型。

(3)有两种数据类型转换为【int\float】类型数据的方法:

有两种将numpy.int64/numpy.int32/... 等数据类型转换为【int\float】类型数据的方法:

【1】、序列对象的 tolist() 方法:  Series.tolist()

【不建议使用python自带的list函数来将序列转化成列表,这可能会无法实现元素数据类型的转换】

【2】、强制转换数据的类型,并重新生成一个列表对象:
# for int
[int(x)for x in your_numpy_array_or_something_else]
# for float
[float(x) for x in your_numpy_array_or_something_else]
# for str
[str(x) for x in your_numpy_array_or_something_else]

三,数据对比类图形

1,多重柱形图

(1)含义:即多个系列数据绘制的柱形图,不同系列的数据的图形用一种颜色表示。

基本语法:

from pyecharts.charts import Bar
from pyecharts.faker import Faker
from pyecharts.globals import ThemeType

c = (
    Bar({"theme": ThemeType.MACARONS})
    .add_xaxis(Faker.choose())
    .add_yaxis("超市A", Faker.values())
    .add_yaxis("超市B", Faker.values())
    
    .set_global_opts(
        title_opts={"text": "Bar-通过 dict 进行配置", "subtext": "举例结果图"}
    )
     .render("bar_dict.html")
)

图例:

官方社区链接:

Bar - Bar_base_dict_config - Document (pyecharts.org)

2,堆积柱形图

(1)基本语法

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

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-堆叠数据(全部)"))
    .render("bar_stack0.html")
)

结果:

3,条形图

(1)基本语法

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

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 轴"))
    .render("bar_reversal_axis.html")
)

结果:

4,3D柱形图

(1)基本语法

Bar3D类创建3D柱形图对象

add方法添加数据:

(1)data参数中输入z轴数据(需要一个n*3形状的二维列表,n是柱体的个数)

(2)xaxis3d_opts 和 yaxis3d_opts分别输入x轴和y轴刻度值

官方社区链接:

Bar3d - Bar3d_punch_card - Document (pyecharts.org)

官方图:

5,环型饼图

(1)基本语法:

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

c = (
    Pie()
    .add(
        "",
        [list(z) for z in zip(Faker.choose(), Faker.values())],
        radius=["40%", "75%"],
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="Pie-Radius"),
        legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"),
    )
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
    .render("pie_radius.html")
)

 官方社区链接:

Pie - Pie_radius - Document (pyecharts.org)

官方图:

6,玫瑰图

(1)基本语法:

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


v = Faker.choose()
c = (
    Pie()
    .add(
        "",
        [list(z) for z in zip(v, Faker.values())],
        radius=["30%", "75%"],
        center=["25%", "50%"],
        rosetype="radius",
        label_opts=opts.LabelOpts(is_show=False),
    )
    .add(
        "",
        [list(z) for z in zip(v, Faker.values())],
        radius=["30%", "75%"],
        center=["75%", "50%"],
        rosetype="area",
    )
    .set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰图示例"))
    .render("pie_rosetype.html")
)

 官方社区链接:

Pie - Pie_rosetype - Document (pyecharts.org)

官方图:

7,雷达图

(1)概念:

雷达图在显示各维度数据的对比情况的同时,还可以对全部维度的整体情况有一个直观的展示。

(1)基本语法:

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

"""
Gallery 使用 pyecharts 1.1.0
参考地址: https://echarts.apache.org/examples/editor.html?c=radar

目前无法实现的功能:

1、雷达图周围的图例的 textStyle 暂时无法设置背景颜色
"""
v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]

(
    Radar(init_opts=opts.InitOpts(bg_color="#CCCCCC"))
    .add_schema(
        schema=[
            opts.RadarIndicatorItem(name="销售(sales)", max_=6500),
            opts.RadarIndicatorItem(name="管理(Administration)", max_=16000),
            opts.RadarIndicatorItem(name="信息技术(Information Technology)", max_=30000),
            opts.RadarIndicatorItem(name="客服(Customer Support)", max_=38000),
            opts.RadarIndicatorItem(name="研发(Development)", max_=52000),
            opts.RadarIndicatorItem(name="市场(Marketing)", max_=25000),
        ],
        splitarea_opt=opts.SplitAreaOpts(
            is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
        ),
        textstyle_opts=opts.TextStyleOpts(color="#fff"),
    )
    .add(
        series_name="预算分配(Allocated Budget)",
        data=v1,
        linestyle_opts=opts.LineStyleOpts(color="#CD0000"),
    )
    .add(
        series_name="实际开销(Actual Spending)",
        data=v2,
        linestyle_opts=opts.LineStyleOpts(color="#5CACEE"),
    )
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        title_opts=opts.TitleOpts(title="基础雷达图"), legend_opts=opts.LegendOpts()
    )
    .render("basic_radar_chart.html")
)

 官方社区链接:

Document

官方图:

  • 37
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值