文章目录

  • 1.前提.
    • 1.1、Pyecharts各个版本与Python的对应关系
    • 1.2、Pyecharts v1系列的新特性
    • 1.3 代码风格重构
    • 1.4 安装 Pyecharts
  • 2、Pyecharts绘图
    • 2.1 绘制柱形图
    • 2.2 条形图
    • 2.3、折线图
    • 2.4、南丁格尔-玫瑰图
    • 2.5、饼图
    • 2.6、雷达图
    • 2.7、pyecharts绘制散点图
    • 2.9、绘制组合图

1.前提.

1.1、Pyecharts各个版本与Python的对应关系

pyecharts 分为 v0.5.x 和 v1.x 两个大版本,v0.5.x 和 v1.x 间不兼容,v1.x 是一个全新的版本。

Pyecharts各版本与python的对应关系见下表

安装 Pyecharts
v1系列版本的Pyecharts仅支持python3.6+ ,即如果你的python是3.6+,则默认会下载最新版的pyecharts。

pip install -i https://pypi.douban.com/simple pyecharts -U
#使用国内软件源下载速度会快很多

安装pyecharts v0.5系列版本

pip install -i https://pypi.douban.com/simple pyecharts==0.5.11

1.2、Pyecharts v1系列的新特性

  • 全面拥抱 Python3 和 TypeHint
    pyecharts v1.0.0 停止对 Python2.7,3.4~3.5 版本的支持和维护,仅支持 Python3.6+。如果还不知道什么是 TypeHint 的同学,劝你尽早入坑,官方入坑指南 typing — Support for type hints。

    在编程界,早已流传着 动态一时爽,重构火葬场 这样的真知灼见,动态语言类型检查已经成为了一种趋势,Javascript 已经有了 Typescript,Python 也在力推 TypeHint,虽然 Python 的 TypeHint 实际上对于程序的运行并没有任何影响…,但它配合 IDE 和 mypy,或者 pyright 这样的工具可以在开发阶段趁早发现问题。

  • 弃用插件机制
    pyecharts v1.0.0 废除原有的插件机制,包括地图包插件和主题插件,插件的本质是提供 pyecharts 运行所需要的静态资源文件(基本都是 .js 文件),所以现在开放了两种模式提供静态资源文件。

    online 模式,使用 pyecharts 官方提供的 assets host,或者部署自己的 remote host。

    local 模式,使用自己本地开启的文件服务提供 assets host(离线模式)。
    支持 JupyterLab

  • JupyterLab 的支持一直是很多开发者关心的功能,毕竟 JupyterLab 号称是下一代的 Notebook。pyecharts 1.0.0 开始支持在 JupyterLab 中渲染图表啦!

#使用JupytrLab需添加如下代码
from pyecharts.globals import CurrentConfig,NotebookType
CurrentConfig,NOTEBOOK_TYPE=NotebookType.JUPYTER_LAB
#除了以上代码,还需在渲染之前执行加载JavaScript脚本的代码,这里以柱状图对象bar为例
bar.load_javascript()
#然后再渲染即可
bar.render_notebook()

1.3 代码风格重构

所有配置项均 OOP,在新版本的 pyecharts 中,一切皆 Options。配置项种类更多,可操作性更强,可以画出更丰富的图表,pyecharts 官方画廊 pyecharts/pyecharts-gallery。

  • 0.5.X 版本写法
from pyecharts import Bar
​
attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]
bar = Bar("柱状图数据堆叠示例")
bar.add("商家A", attr, v1, is_stack=True)
bar.add("商家B", attr, v2, is_stack=True)
bar.render()
  • 1.0.0 版本写法,支持链式调用
import pyecharts.options as opts
from pyecharts.charts import Bar
​
attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
v1 = [5, 20, 36, 10, 75, 90]
v2 = [10, 25, 8, 60, 20, 80]
​
​
bar = (Bar().add_xaxis(attr).add_yaxis("商家A", v1, stack="stack1").add_yaxis("商家B", v2, stack="stack1").set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="柱状图数据堆叠示例"))
)
​
bar.render()
  • 支持 selenium/phantomjs 渲染图片
pyecharts 1.0.0 提供两种模式渲染图片,selenium 和 phantomjs,分别需要安装 snapshot-selenium 和 snapshot-phantomjs。from pyecharts import options as opts
from pyecharts.charts import Bar
from pyecharts.render import make_snapshot
​
​
def bar_chart() -> Bar:c = (Bar().add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"]).add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105]).add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49]).set_global_opts(title_opts=opts.TitleOpts(title="Bar-测试渲染图片")))return c
​
​
def render_chart_by_selenium():from snapshot_selenium import snapshotmake_snapshot(snapshot, bar_chart().render(), "bar0.png")
​
​
def render_chart_by_phantomjs():from snapshot_phantomjs import snapshotmake_snapshot(snapshot, bar_chart().render(), "bar1.png")

1.4 安装 Pyecharts

v1系列版本的Pyecharts仅支持python3.6+ ,即如果你的python是3.6+,则默认会下载最新版的pyecharts。

pip install -i https://pypi.douban.com/simple pyecharts -U #使用国内软件源下载速度会快很多
安装pyecharts v0.5系列版本:

pip install -i https://pypi.douban.com/simple pyecharts==0.5.11

2、Pyecharts绘图

绘图前需要导入相关模块,根据绘制的图形不同,导入的模块会有些许差异

from pyecharts import options as opts #引入配置项入口
from pyecharts.charts import Bar,Line #导入相关图形的构造方法

2.1 绘制柱形图

#1、构造柱形图对象
bar = Bar()
#2、添加x轴数据
bar.add_xaxis(xaxis_data=x_data)
#   添加y轴数据
bar.add_yaxis( "系列名称",                     #设置系列名称yaxis_data=y_data,             #设置y轴系列数据......                          #更多参数可以查看官网)
#3、对系列进行配置
bar.set_series_opts(                          #主要是对图元、文字、......                          #标签、线型、标记点、标记线 等内容进行配置
)
#4、对全局进行配置
bar.set_global_opts(                         #可配置内容包括:x、y坐标轴;初始化配置;......                         #工具箱配置;标题;区域缩放;图例;#提示框等参数配置
)
#5、渲染图片
bar.render(path)                             #将图片渲染为html文件
bar.render_notebook()                        #直接在jupytr notebook中渲染
from example.commons import Faker       #调用官方提供的测试数据
from pyecharts import options as opts   #配置入口模块
from pyecharts.charts import Bar        #柱状图构造方法bar = Bar()#构造bar对象
bar.add_xaxis(Faker.choose()) #添加x轴数据
bar.add_yaxis("商家A", Faker.values()) #添加一个系列数据,这里是A商家的数据
bar.add_yaxis("商家B", Faker.values()) #添加另一个系列数据
bar.set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", #设置主标题subtitle="我是副标题" #设置副标题))
bar.render_notebook()                   #在jupyter notebook中渲染

2.2 条形图

当条目较多,如大于12条,移动端上的柱状图会显得拥挤不堪,更适合用条形图。一般数据条目不超过30条,否则易带来视觉和记忆负担。

2.3、折线图

当数据X轴为连续数值(如时间)且我们比较注重观察数据变化趋势时,折线图是非常好的选择。

import pyecharts.options as opts
from pyecharts.charts import Lineline=Line()
line.add_xaxis(["201{}年/{}季度".format(y,z) for y in range(4) for z in range(1,5)]) #设置x轴数据
line.add_yaxis("电视机销量", [4.80,4.10,6.00,6.50,5.80,5.20,6.80,7.40,6.00,5.60,7.50,7.80,6.30,5.90,8.00,8.40])#设置y轴数据
line.set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-40),),#设置x轴标签旋转角度yaxis_opts=opts.AxisOpts(name="销量(单位/千台)"),#设置y轴名称title_opts=opts.TitleOpts(title="折线图"))        #设置图表标题line.render_notebook() #渲染图表

2.4、南丁格尔-玫瑰图

当对比差异不是很明显的数据时,可以使用南丁格尔玫瑰图,其原理为:扇形的半径和面积是平方的关系,南丁格尔玫瑰图会将数值之间的差异放大,适合对比大小相近的数值。它不适合对比差异较大的数值。

此外,因为圆有周期性,玫瑰图也适于表示周期/时间概念,比如星期、月份。依然建议数据量不超过30条,超出可考虑条形图。

def pie_rosetype():from pyecharts.charts import Piec = (Pie().add("",[list(z) for z in zip(["201{}年/{}季度".format(y,z)for y in range(2) for z in range(1,3)], [4.80,4.10,5.80,5.20])],radius=["0%", "75%"],          #设置内径外径rosetype="radius",             #玫瑰图有两种类型label_opts=opts.LabelOpts(is_show=True),).set_global_opts(title_opts=opts.TitleOpts(title="Pie-玫瑰图示例")))return c
pie_rosetype().render_notebook()

2.5、饼图

部分相较于整体,一个整体被分成几个部分。这类情况会用到构成型图表,如五大产品的收件量占比、公司利润的来源构成等。

对于参与构成研究的数据不超过9个时,可以使用饼图来绘制,如果超过了建议使用条形图来展示。

def pie_base():from pyecharts import options as optsfrom pyecharts.charts import Page, Piev1=["啤酒","可乐","雪碧","咖啡","奶茶"]v2=[30,19,21,12,18]c = (Pie().add("", [list(z) for z in zip(v1,v2)]).set_global_opts(title_opts=opts.TitleOpts(title="销售收入占比")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}%"))#格式化标签输出内容)return c
pie_base().render_notebook()

2.6、雷达图

对于一些多维的性能数据,如王者荣耀等游戏中的玩家战力信息,常用雷达图表示。指标得分接近圆心,说明处于较差状态,应分析改进;指标得分接近外边线,说明处于理想状态。

from pyecharts import options as opts
from pyecharts.charts import Page, Radarv1 = [[4300, 10000, 28000, 35000, 50000, 19000]]
v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]def radar_base() -> Radar:c = (Radar().add_schema(schema=[opts.RadarIndicatorItem(name="KDA", max_=6500),opts.RadarIndicatorItem(name="输出", max_=16000),opts.RadarIndicatorItem(name="经济", max_=30000),opts.RadarIndicatorItem(name="生存", max_=38000),opts.RadarIndicatorItem(name="推进", max_=52000),opts.RadarIndicatorItem(name="打野", max_=25000),]).add("鲁班", v1,            #添加系列名称及数据color="red",           #设置边框线的颜色areastyle_opts = opts.AreaStyleOpts(#设置填充的属性opacity = 0.5,                  #透明度color="red"                     #填充颜色),).add("后裔", v2,color="blue",areastyle_opts = opts.AreaStyleOpts(opacity = 0.5,#透明度color="blue"),).set_series_opts(label_opts=opts.LabelOpts(is_show=False)).set_global_opts(title_opts=opts.TitleOpts(title="英雄成长对比")))return c
radar_base().render_notebook()

2.7、pyecharts绘制散点图

通过分布&联系型图表能看到数据的分布情况,进而找到某些联系,如相关性、异常值和数据集群。

常见使用场景:客户的分布与哪些因素相关、身高与体重的相关性分析等

查看两个变量的关系使用散点图,以贷款业务为例,查看年龄与信用的关系

def scatter_render():from pyecharts.charts import Scatterfrom pyecharts import options as optsfrom pyecharts.commons.utils import JsCodeimport pandas as pddf = pd.DataFrame({"年龄":[32,28,23,24,21],"信用分":[771,751,738,726,725],"姓名":['小明','小花','小丽','小刚','小红']})df.sort_values("年龄",inplace=True,ascending=True)# 按年龄对数据做升序排序c = (Scatter().add_xaxis(df.年龄.values.tolist()).add_yaxis("信用分",df[["信用分","姓名"]].values.tolist(),#传入信用分与姓名组合,方便js回调函数显示标签label_opts=opts.LabelOpts(formatter=JsCode("function(params){return params.value[2];}" #通过定义JavaScript回调函数自定义标签))).set_global_opts(title_opts=opts.TitleOpts(title="Scatter-多维度数据"),xaxis_opts = opts.AxisOpts(type_="value",#x轴数据类型是连续型的min_=20       #x轴范围最小为20),yaxis_opts = opts.AxisOpts(min_=700      #y轴范围最小为700)))return cscatter_render().render_notebook()

2.9、绘制组合图

   组合图就是将两种不同的图形绘制到同一图表中,我们以数据分析中常常用到的帕累托图为例,展示pyecharts如何绘制组合图。帕累托法则又称为二八法则,即百分之八十的问题是百分之二十的原因造成的。帕累托图(Pareto chart)又叫排列图、主次图,是按照发生频率大小顺序绘制的直方图,表示有多少结果是由已确认类型或范畴的原因所造成。帕累托图在项目管理中主要用来找出产生大多数问题的关键原因来解决大多数问题,是将出现的质量问题按照重要程度依次排列的一种图表,从而可以直观地得出影响质量问题的主要因素。

主要特点:

1、柱形图的数据按数值的降序排列,折线图上的数据有累积百分比数据,并在次坐标轴显示;

2、折线图的起点数值为0%,并且位于柱形图第一个柱子的最左下角;

3、折线图的第二个点位于柱形图第一个柱子的最右上角 ;

4、折线图最后一个点数值为100%,位于整张图形的最右上角

数据:

def bar_overlap_line():from pyecharts import options as opts #引入配置项from pyecharts.charts import Bar,Line​x_data1 = ["产品价格优势不突出","渠道经理服务不到位","营销活动频次不够","区域消费市场不景气","其他"]x_data2 = [*range(6)]y_data1 = [115,99,59,33,23]y_data2 = [0,35,65,83,93,100]
​#######################################################################bar = Bar()#添加x轴数据bar.add_xaxis(xaxis_data=x_data1)bar.set_global_opts(xaxis_opts=opts.AxisOpts(type_="category"))  #设置x轴系列 bar.add_yaxis( "问题数量(频数)",                                  #设置y轴系列名称yaxis_data=y_data1,                     #设置y轴系列数据category_gap=0,                         #设置柱的间距color="blue",                        #设置柱形的填充颜色)
​bar.extend_axis(xaxis=opts.AxisOpts(             #设置x轴的参数is_show=False,position="top",)   )  bar.extend_axis(yaxis=opts.AxisOpts(axistick_opts=opts.AxisTickOpts(        #刻度is_inside=True,),axislabel_opts=opts.LabelOpts(formatter="{value}%", #格式化刻度输出position="right")))                 bar.set_global_opts(xaxis_opts=opts.AxisOpts(                 #设置x轴的参数is_show=True,     #是否显示坐标轴),yaxis_opts=opts.AxisOpts(              #设置y轴最大取值范围max_=320,),title_opts=opts.TitleOpts(title="帕累托图"))                 ##########################################################################                line =Line()#添加x轴数据line.add_xaxis(x_data2)#添加y轴数据  line.add_yaxis("累计百分比",y_data2,xaxis_index=1,                          #使用次x坐标轴yaxis_index=1,                          #使用次y坐标轴label_opts=opts.LabelOpts(is_show=False),is_smooth=True,)             bar.overlap(line)                                  #组合柱状图与折线图return bar
bar_overlap_line().render_notebook()

参考大佬的文章:

https://www.cnblogs.com/hunterZ/p/11223152.html

Python3.6+ pyecharts v1.x 绘图相关推荐

  1. 独家 | pyecharts V1.0.0 版本正式发布

    ♚ 陈键冬,Python中文社区专栏作者,开源项目pyecharts核心开发者. GitHub:https://github.com/chenjiandongx 本文作者已加入Python中文社区专栏 ...

  2. 用Python爬取新型冠状病毒肺炎实时数据,pyecharts v1.x绘制省市区疫情地图

    说明: 本文是Python可视化技术结合时下热点进行进行开发.讲解的案例,也课程思政的一个形式.文章遵守CSDN平台规定和国家法规(非新闻资质的网站不允许发布疫情数据),对运行结果(2020年2月8日 ...

  3. python动态横道图_用Python pyecharts v1.x 绘制图形【转】

    关于pyecharts pyecharts是一个用于生成echart(百度开源的数据可视化javascript库)图表的类库.pyecharts 分为 v0.5.x 和 v1.x 两个大版本,版本不兼 ...

  4. Pyecharts v1 Geo库的一些更新与应用

    最近在利用Python进行爬虫的过程中,需要对网页中爬取的数据做一些可视化的处理,其中有部分数据是关于地区分布的,在地图上标注出具体的参数分布将使得数据更加的直观与生动. 地图标注的工具我选择使用的是 ...

  5. python第七关再来一盘_盘一盘 Python 系列 7 - PyEcharts (v1.0)

    原标题:盘一盘 Python 系列 7 - PyEcharts (v1.0) 本文含5835字,33图表截屏 建议阅读30分钟 0 引言 有读者说[ PyEcharts ]一贴里的图美如画,但是版本是 ...

  6. 盘一盘 Python - PyEcharts (v1.0)

    本文含 5835 字,33 图表截屏 建议阅读 30 分钟 0 引言 有读者说[PyEcharts]一贴里的图美如画,但是版本是 pyecharts v0.5,用现在 v1.0 来运行会出错,建议我再 ...

  7. 用Python pyecharts v1.x 绘制图形(二):折线图、折线面积图、散点图、雷达图、箱线图、词云图

    文章目录 关于pyecharts 折线图 折线面积图 散点图 雷达图 箱线图 词云图 其他 关于pyecharts pyecharts是一个用于生成echart(百度开源的数据可视化javascrip ...

  8. pyecharts查看版本_[pyecharts]v1版本爬坑之旅

    我国庆闲(咸)余(鱼)时间完成 pyecharts的安装,随后就开始了我的爬坑之旅. pyecharts这个包安装十分顺利,但是没想到后续还有一大堆坑. 首先是版本问题,在githubgithub上的 ...

  9. pyecharts V1.9.0学习笔记 柱状图和全局配置(一)

    csdn上好多代码都是0.5.x版本,所以在这里记录一下1.0.0版本后的也就是这次python3的版本. Bar 棒状图 from pyecharts.charts import Barbar = ...

最新文章

  1. MongoDB 标准连接字符串
  2. iOS iTunes Connect协议更新导致无法构建新版本
  3. 【BLE MIDI】MIDI 时间标志分析 ( 音符速度设置事件 | 拍号设置事件 | 基本时间 - 每个四分音符有多少 tick 或 pulse | 节拍时值计算 | 小节时值计算 )
  4. 关于在呼叫中心业务中应用语音识别技术的探讨
  5. 0421 版本适配和本地化
  6. 《纲要》落地,东方通教你挖数据金矿
  7. Linux网络:Virtual Routing and Forwarding (VRF)
  8. 类型②typeof 操作符
  9. c语言除去字符串多余的空格,从一个字符串中去除多余的空格(用指针描述)...
  10. C# MessageBox用法实例
  11. c++实现单例模式完整源代码
  12. C语言求质数的几种简单易懂方法
  13. 人工智能(AI)经历了怎样的发展历程?
  14. python画图像_使用python绘制SDSS图像
  15. android 系统输入法显示与隐藏监听
  16. 2020上半年数据分析人才及CDA持证人行业报告
  17. Matlab中的数值精度问题
  18. Play 2.6 使用Play WS调用REST API
  19. 计算机二级易错知识点 2021 8.8
  20. 局部搜索、模拟退火和遗传算法求解TSP问题

热门文章

  1. openstack ocata部署ceilometer+gnocchi
  2. 串口参数详解:波特率,数据位,停止位,奇偶校验位
  3. ELMO驱动器与nanotec电机用conpser连接时PID调节方式
  4. office2016每次打开word都要配置进度的解决方案
  5. 何为:“P类问题,NP问题,NP难问题?”
  6. 利用ggplot画分组柱状图的方法
  7. uclibc、eglibc、glibc、Musl-libc之间的区别和联系
  8. Wordpress漏洞,WPScan使用完整攻略
  9. 常见邮件发送失败原因分析以及解决方法
  10. 微信小程序实现lot开发04 条件渲染与列表渲染