当前位置:   article > 正文

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

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)带有滑动条的柱形图

  1. #导入模块
  2. from pyecharts import options as opts
  3. from pyecharts.charts import Bar
  4. from pyecharts.faker import Faker
  5. c = (
  6. Bar()
  7. .add_xaxis(Faker.days_attrs)
  8. .add_yaxis("超市A", Faker.days_values, color=Faker.rand_color())
  9. .set_global_opts(
  10. title_opts=opts.TitleOpts(title="带有滑动条的柱形图"),
  11. datazoom_opts=opts.DataZoomOpts(),
  12. )
  13. .render("带有滑动条的柱形图.html")
  14. )

结果如下:

(2)带有时间轴的饼图

  1. #导入模块
  2. from pyecharts import options as opts
  3. from pyecharts.charts import Pie, Timeline
  4. from pyecharts.faker import Faker
  5. attr = Faker.choose()
  6. tl = Timeline()
  7. for i in range(2015, 2020):
  8. pie= ( ##饼图
  9. Pie()
  10. .add(
  11. "某某",
  12. [list(z) for z in zip(attr, Faker.values())],
  13. rosetype="radius",
  14. radius=["30%", "55%"],
  15. )
  16. .set_global_opts(title_opts=opts.TitleOpts("某某{}年".format(i)))
  17. )
  18. tl.add(pie, "{}年".format(i))
  19. tl.render("带有时间轴的饼图.html")

结果如下:

(3)热力地图

  1. #导入模块
  2. from pyecharts import options as opts
  3. from pyecharts.charts import Geo
  4. from pyecharts.faker import Faker
  5. from pyecharts.globals import ChartType
  6. c = ( //热力图
  7.    Geo()
  8.    .add_schema(maptype="广东")
  9.    .add(
  10.        "geo",
  11.        [list(z) for z in zip(Faker.guangdong_city, Faker.values())],
  12.        type_=ChartType.HEATMAP,
  13.    )
  14.    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
  15.    .set_global_opts(
  16.                visualmap_opts=opts.VisualMapOpts(), title_opts=opts.TitleOpts(title="Geo-广东地图")
  17.    )
  18.    .render("geo_guangdong.html")
  19. )

结果如下:

二,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】、强制转换数据的类型,并重新生成一个列表对象:
  1. # for int
  2. [int(x)for x in your_numpy_array_or_something_else]
  3. # for float
  4. [float(x) for x in your_numpy_array_or_something_else]
  5. # for str
  6. [str(x) for x in your_numpy_array_or_something_else]

三,数据对比类图形

1,多重柱形图

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

基本语法:

  1. from pyecharts.charts import Bar
  2. from pyecharts.faker import Faker
  3. from pyecharts.globals import ThemeType
  4. c = (
  5. Bar({"theme": ThemeType.MACARONS})
  6. .add_xaxis(Faker.choose())
  7. .add_yaxis("超市A", Faker.values())
  8. .add_yaxis("超市B", Faker.values())
  9. .set_global_opts(
  10. title_opts={"text": "Bar-通过 dict 进行配置", "subtext": "举例结果图"}
  11. )
  12. .render("bar_dict.html")
  13. )

图例:

官方社区链接:

Bar - Bar_base_dict_config - Document (pyecharts.org)

2,堆积柱形图

(1)基本语法

  1. from pyecharts import options as opts
  2. from pyecharts.charts import Bar
  3. from pyecharts.faker import Faker
  4. c = (
  5. Bar()
  6. .add_xaxis(Faker.choose())
  7. .add_yaxis("商家A", Faker.values(), stack="stack1")
  8. .add_yaxis("商家B", Faker.values(), stack="stack1")
  9. .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
  10. .set_global_opts(title_opts=opts.TitleOpts(title="Bar-堆叠数据(全部)"))
  11. .render("bar_stack0.html")
  12. )

结果:

3,条形图

(1)基本语法

  1. from pyecharts import options as opts
  2. from pyecharts.charts import Bar
  3. from pyecharts.faker import Faker
  4. c = (
  5. Bar()
  6. .add_xaxis(Faker.choose())
  7. .add_yaxis("商家A", Faker.values())
  8. .add_yaxis("商家B", Faker.values())
  9. .reversal_axis()
  10. .set_series_opts(label_opts=opts.LabelOpts(position="right"))
  11. .set_global_opts(title_opts=opts.TitleOpts(title="Bar-翻转 XY 轴"))
  12. .render("bar_reversal_axis.html")
  13. )

结果:

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)基本语法:

  1. from pyecharts import options as opts
  2. from pyecharts.charts import Pie
  3. from pyecharts.faker import Faker
  4. c = (
  5. Pie()
  6. .add(
  7. "",
  8. [list(z) for z in zip(Faker.choose(), Faker.values())],
  9. radius=["40%", "75%"],
  10. )
  11. .set_global_opts(
  12. title_opts=opts.TitleOpts(title="Pie-Radius"),
  13. legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"),
  14. )
  15. .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))
  16. .render("pie_radius.html")
  17. )

 官方社区链接:

Pie - Pie_radius - Document (pyecharts.org)

官方图:

6,玫瑰图

(1)基本语法:

  1. from pyecharts import options as opts
  2. from pyecharts.charts import Pie
  3. from pyecharts.faker import Faker
  4. v = Faker.choose()
  5. c = (
  6. Pie()
  7. .add(
  8. "",
  9. [list(z) for z in zip(v, Faker.values())],
  10. radius=["30%", "75%"],
  11. center=["25%", "50%"],
  12. rosetype="radius",
  13. label_opts=opts.LabelOpts(is_show=False),
  14. )
  15. .add(
  16. "",
  17. [list(z) for z in zip(v, Faker.values())],
  18. radius=["30%", "75%"],
  19. center=["75%", "50%"],
  20. rosetype="area",
  21. )
  22. .set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰图示例"))
  23. .render("pie_rosetype.html")
  24. )

 官方社区链接:

Pie - Pie_rosetype - Document (pyecharts.org)

官方图:

7,雷达图

(1)概念:

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

(1)基本语法:

  1. import pyecharts.options as opts
  2. from pyecharts.charts import Radar
  3. """
  4. Gallery 使用 pyecharts 1.1.0
  5. 参考地址: https://echarts.apache.org/examples/editor.html?c=radar
  6. 目前无法实现的功能:
  7. 1、雷达图周围的图例的 textStyle 暂时无法设置背景颜色
  8. """
  9. v1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
  10. v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]
  11. (
  12. Radar(init_opts=opts.InitOpts(bg_color="#CCCCCC"))
  13. .add_schema(
  14. schema=[
  15. opts.RadarIndicatorItem(name="销售(sales)", max_=6500),
  16. opts.RadarIndicatorItem(name="管理(Administration)", max_=16000),
  17. opts.RadarIndicatorItem(name="信息技术(Information Technology)", max_=30000),
  18. opts.RadarIndicatorItem(name="客服(Customer Support)", max_=38000),
  19. opts.RadarIndicatorItem(name="研发(Development)", max_=52000),
  20. opts.RadarIndicatorItem(name="市场(Marketing)", max_=25000),
  21. ],
  22. splitarea_opt=opts.SplitAreaOpts(
  23. is_show=True, areastyle_opts=opts.AreaStyleOpts(opacity=1)
  24. ),
  25. textstyle_opts=opts.TextStyleOpts(color="#fff"),
  26. )
  27. .add(
  28. series_name="预算分配(Allocated Budget)",
  29. data=v1,
  30. linestyle_opts=opts.LineStyleOpts(color="#CD0000"),
  31. )
  32. .add(
  33. series_name="实际开销(Actual Spending)",
  34. data=v2,
  35. linestyle_opts=opts.LineStyleOpts(color="#5CACEE"),
  36. )
  37. .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
  38. .set_global_opts(
  39. title_opts=opts.TitleOpts(title="基础雷达图"), legend_opts=opts.LegendOpts()
  40. )
  41. .render("basic_radar_chart.html")
  42. )

 官方社区链接:

Document

官方图:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/165174
推荐阅读
相关标签
  

闽ICP备14008679号