pyecharts简介

pyecharts是基于前端可视化框架echarts的Python可视化库。该库让我们在Python里也可以充分体验到快速出图和丰富交互的数据可视化体验。

echarts主要开发者御术曾说过,和d3相比,d3是面粉而echarts相当于面条。这是个很形象的比喻,和面粉相比,面条可以快速煮出各种美食,很贴合echarts的特点。echarts开箱即用,文档详细、可以配置的参数多,且有很多改改配置就能用的例子。pyecharts也具备这一优点。

代码框架与配置项

pyecharts的可视化基本代码框架如下。

import pyechartsbar=pyecharts.charts.Bar() #初始化一个柱状图bar.add_xaxis(['Mon.','Tue.','Wed.','Thu.','Fri.']) #设置x轴bar.add_yaxis("y", [76,37,90,60,50],color='#1eafae') #y轴bar.set_global_opts(title_opts=opts.TitleOpts(title="主标题",pos_left='center'))bar.render_notebook()  #在jupyter notebook中出图#bar.render('bar_charts_01.html')  #保存为文件

可以看到的是,pyecharts遵循了大部分Python可视化库的写法,初始化图对象,明确是什么类型的图,设置x,y轴数据及属性,设置图元属性,出图。

pyecharts绘制交互柱状图

pyecharts本质做的是把Python语句向echarts的JavaScript语句的映射,因此更强调配置,语句上使用add_set_频率高。pyecharts囊括了30+常用的图表类型,而且对于表格展示、图像显示也有对应接口,除了输出html外,支持主流notebook环境的图表显示,还能很方便地和Flask、Django等Python前端框架集成。

在语句组织上,也可以用链式调用写法,思路和上面一致,初始化,设置X/Y,设置图元属性,出图。

bar = (    Bar().add_xaxis(x).add_yaxis("y",y))bar.render()

在图元属性上,图形颜色、文本标签通过向add_yaxis传参设置。也能通过set_colors设置全局配色。

标题、图例等设置通过 set_global_opts设置,从语句名字可以看出其可以设置各种全局的属性。实例语句如下:

from pyecharts import options as optsbar.set_global_opts(title_opts=opts.TitleOpts(title="主标题",                                              subtitle="副标题",pos_left='center'),                   legend_opts=opts.LegendOpts(pos_left='5px'))

set_global_opts设置的图元包括:

•title_opts:标题设置,封装为pyecharts.options.TitleOpts(),属性有title,title_link,subtitle(副标题),pos_left,pos_top,title_textstyle_opts等实用配置。所以写法为:title_opts=opts.TitleOpts();•legend_opts:图例配置项,可以控制是否显示图例、图例相对位置、图例每项之间的间隔等属性,对应封装为LegendOpts();•tooltip_opts:提示框配置项,包括是否显示,触发条件等;•toolbox_opts:工具箱配置项;•brush_opts:区域选择组件配置项;•xaxis_opts:x坐标轴配置项,对应的封装是在AxisOpts()里,可以设置坐标轴类型(数值类型、离散类型,对数坐标轴、时间轴)、坐标轴名称、是否显示、值域、各种相对位置等属性;•yaxis_opts:y坐标轴配置项,对应封装也在AxisOpts();•visualmap_opts:视觉映射配置项;•datazoom_opts:区域缩放配置项;

等等,以上具体属性使用时可以随时查阅官方文档[1]。图形画布的宽度、背景色、使用主题等会在初始化图表时配置,称作InitOpts,也就是写在Bar()里,而不是传进set_global_opts。配置属性的时候需要注意的是type、min、max是Python的关键字,因此都用的type_、min_、max_这种形式。转为JavaScript会转回type,min,max。

bar=pyecharts.charts.Bar(init_opts=opts.InitOpts(width="400px",height="400px",page_title="pyecharts-demo"))

翻转XY轴

通过翻转柱状图的xy轴绘制条形图:

bar.reversal_axis()  #翻转柱状图的xy轴bar.render_notebook()

翻转xy轴得到条形图

数据进行统计后调整category_gap参数可以绘制出直方图

bar=pyecharts.charts.Bar()bar.add_xaxis(list(df['x']))bar.add_yaxis("y",list(df['y']),color='#1eafae',category_gap=0)bar.render_notebook()  #直方图

绘制堆叠柱状图,只需要给bar对象添加两个.add_yaxis()再设置stack属性,实例如下:

#堆叠柱df=pd.DataFrame({'x':['Mon.','Tue.','Wed.','Thu.','Fri.'],                 'y':[76,37,90,60,50],                 'z':[37,46,53,81,60]})bar=pyecharts.charts.Bar()bar.add_xaxis(list(df['x']))bar.add_yaxis("y",list(df['y']),color='#ba5c25',stack='s1',label_opts=opts.LabelOpts(position='inside'))bar.add_yaxis("z",list(df['z']),color='#1eafae',stack='s1',label_opts=opts.LabelOpts(position='inside'))bar.render_notebook()

堆叠柱状图效果

绘制折线图的多条折线也是用add_yaxis()

#箱线图ybox=[59, 81, 80, 82, 50, 67, 66, 74, 75, 76, 91, 72]zbox=[59, 41, 80, 62, 70, 61, 46, 54, 45, 66, 85, 42]b=pyecharts.charts.Boxplot()b.add_xaxis(['boxplot-x-axis'])b.add_yaxis("y",[sorted(ybox)])  b.add_yaxis("z",[sorted(zbox)])b.render_notebook()

饼图

直角坐标系基本都是.add_xaxis(x).add_yaxis("y",y)配置X/Y轴的数据(包括箱线图),而饼图、雷达图等,是用add()配置数据。饼图的每块楔形对应的数为(标签,数值),因此传入add的数据不是[[x1,x2, …], [y1,y2, …]]这一的x的列表和y的列表,而是需要[(key1,val1),(k2,v2)]这样的组织形式。

c=pyecharts.charts.Pie()  #pyecharts绘制饼图c.add("y",[[v['x'],v['y']] for i,v in df.iterrows()])#不是add_yaxis了;[(key1,val1),(k2,v2)]c.set_colors(['#1eafae','#69ffff', '#ba5c25', '#ffa069', '#a3ffff','#d7ce88'])c.render_notebook()

c=pyecharts.charts.Radar()  #雷达图sch=[opts.RadarIndicatorItem(name=i,max_=100) for i in list(df['x'])]c.add_schema(sch,shape='polygon') #shape可选 'polygon' 和 'circle',默认polygonc.add("y",[list(df['y'])],linestyle_opts=opts.LineStyleOpts(color="#1eafae"))  c.add("z",[list(df['z'])],linestyle_opts=opts.LineStyleOpts(color="#ba5c25")) c.render_notebook()

雷达图的每条折线通过add()添加序列数据,基本上我们绘制雷达图各类别是分类变量(例如上图中的Mon.、Tue.等类别),配置进去需要用参数详解RadarIndicatorItem(name),雷达图绘制时最好显性声明每类的最大值,否则默认用的序列最大值。

关系图及数据特点

要绘制节点关系图等关系图,需要准备两份数据,一个节点表,一个边表。

节点表与边表

下面的例子更形象。节点表nodes说明有哪些节点,点的半径大小,每个节点是一个字典类型的数据,边表links说明谁连接谁,从节点A指向点B。必须要声明的是source和target,还可以有value、lineStyle等属性。

nodes = [    {"name": "A", "symbolSize": 10},    {"name": "B", "symbolSize": 40},    {"name": "C", "symbolSize": 20},    {"name": "D", "symbolSize": 10}]links=[    {"source":'A', "target":'B'},    {"source":'B', "target":'C','value': 10},    {"source":'C', "target":'D','lineStyle':{'normal':{'show':'true','width': 2}}},    {"source":'D', "target":'B'},]g=pyecharts.charts.Graph()g.add('',nodes,links,edge_length=100,repulsion=1500)  #repulsion:节点之间的斥力因子;  gravity:节点受到的引力因子;g.render_notebook()

桑吉图

Sankey图也是节点和边两个数据输入。

nodes = [    {"name": "A", "symbolSize": 10},    {"name": "B", "symbolSize": 40},    {"name": "C", "symbolSize": 20},    {"name": "D", "symbolSize": 10}]links=[    {"source":'A', "target":'C','value': 10},    {"source":'B', "target":'C','value': 15},    {"source":'C', "target":'D','value': 10},    {"source":'B', "target":'D','value': 10},]g=pyecharts.charts.Sankey()g.add('',nodes,links,      label_opts=opts.LabelOpts(position="inside"),      linestyle_opt=opts.LineStyleOpts(opacity=0.3, curve=0.2)) #默认颜色太难看了g.render_notebook()

复合图表

层叠不同类型的图、一行多图等排版对于pyecharts是基本操作。

通过b.overlap(a)将图a叠加到b类型的图上,且他们会共用一套坐标系。

#在同一坐标系里叠加多种图bar=pyecharts.charts.Bar()bar.add_xaxis(list(df['x']))bar.add_yaxis("y",list(df['y']),color='#1eafae')line = pyecharts.charts.Line().add_xaxis(list(df['x'])) \                .add_yaxis("z",list(df['z']),color='#ba5c25',z_level=2)bar.overlap(line)bar.render_notebook()

多个图进行排列而不是叠加到同一个坐标系里用grid和page,同一行多个图是grid,一页多图从上往下用的是page。通过选项卡点击切换多个图用tab,时间线轮播图用timeline。示例代码如下。综合以上的用法可以搭建仪表盘。

bar=pyecharts.charts.Bar()bar.add_xaxis(list('abcdef'))bar.add_yaxis('y',a,color='#1eafae')bar.set_global_opts(title_opts=opts.TitleOpts(title="帕累托图1", subtitle="双轴直角坐标图",pos_left='center'),                    legend_opts=opts.LegendOpts(pos_left='60px'))line=pyecharts.charts.Line()line.add_xaxis(list('abcdef'))line.add_yaxis('d',b,z_level=2)line.extend_axis(        yaxis=opts.AxisOpts(            name="累积比例",            type_="value",            min_=0,            max_=1,            position="right",            axisline_opts=opts.AxisLineOpts(                linestyle_opts=opts.LineStyleOpts(color="#ba5c25")            )        )    )line.set_global_opts(yaxis_opts=opts.AxisOpts(position="right"),legend_opts=opts.LegendOpts(pos_left='120px'))grid=pyecharts.charts.Grid()grid.add(bar,grid_opts=opts.GridOpts(pos_right="18%"))grid.add(line,grid_opts=opts.GridOpts(pos_right="18%"))grid.render_notebook()

tab = pyecharts.charts.Tab()bar1=pyecharts.charts.Bar()bar1.add_xaxis(list(df['x']))bar1.add_yaxis('y',list(df['y']),color='#1eafae')bar2=pyecharts.charts.Bar()bar2.add_xaxis(list(df['x']))bar2.add_yaxis('z',list(df['z']),color='#ba5c25')        tab.add(bar1, "bar-example1")tab.add(bar2, "bar2")tab.render_notebook()

pyecharts切换tab交互示例

总结

无论是从图表丰富性还是学习曲线角度看,pyecharts都是排名前列的可视化库。pyecharts上手很简单,文档很详细,有各种个性化需求时,通过查阅pyecharts的文档和echarts的文档基本都能得到解决,因此大家喜欢用也就不足为奇。pyecharts做的是从Python对象向JavaScript的转换,echarts支持的图表太丰富了,不一定需要一个个图表类型去看参数,有具体需求时边查文档边实现是更好的选择。

References

[1] 官方文档: https://pyecharts.org/#/zh-cn/global_options

pyecharts x轴字体大小调整_大家很喜欢用的可视化神器——Pyecharts|可视化系列07...相关推荐

  1. pyecharts x轴字体大小调整_这应该是最通俗易懂的PyEcharts的操作指南!

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

  2. pyecharts x轴字体大小调整_pyecharts极简入门教程

    导读 数据可视化是整个数据分析流程中的关键环节,甚至有着一图定成败的关键性地位.前期,陆续推出了matplotlib和seaborn详细入门教程,对于常规的数据探索和基本图表制作是足够的,但二者的一个 ...

  3. pyecharts x轴字体大小调整_pyecharts 柱状图基础篇#学习笔记#

    2020年初,很久没有用过pyecharts的我由于工作原因,安装了新版pyecharts之后,以前的pyecharts代码报错了.搜索之后才发现,我安装的是不兼容旧版本的新版. 空闲的时间,把新版e ...

  4. pyecharts x轴字体大小调整_PyEcharts实战指南

    PyEcharts Author:王圣元 From:王的机器 本文含 5835 字,33图表截屏建议阅读 30 分钟0引言 有读者说[PyEcharts]一贴里的图美如画,但是版本是 pyechart ...

  5. Android全局修改字体大小,Android 仿微信全局字体大小调整

    image 目录 一.前言 二.效果预览 三.实现步骤 1.自定义字体调整控件 2.滑动按钮改变当前页面预览字体大小 3.返回时,保存放大倍数并重启应用 4.初始化应用时配置字体放大倍数. 四.Dem ...

  6. Eclipse设置:背景与字体大小和xml文件中字体大小调整

    Eclipse中代码编辑背景颜色修改:代码编辑界面默认颜色为白色.对于长期使用电脑编程的人来说,白色很刺激我们的眼睛,所以改变workspace的背景色,可以使眼睛舒服一些.设置方法如下:1.打开wi ...

  7. Pycharm 和 Vs code 字体大小调整(Ctrl + 鼠标滚轮实现)

    Pycharm 每次都需要去设置里调整字体,很麻烦,所以也可以设置常用的Ctrl + 鼠标滚轮调整 字体缩小 File ->setting ->Keymap ->在搜寻框中输入dec ...

  8. python怎么把字体变大_Pycharm 字体大小调整设置的方法实现

    一.pycharm字体放大的设置 File ->setting -> Keymap ->在搜寻框中输入increase ->Increase Font Size(双击) -&g ...

  9. JetBrains产品字体大小调整

    JetBrains产品字体大小调整 前言: 1.打开编译器 2.在文件中 选择设置. 3.进入设置界面(如下) 一.整体界面字体大小调整 二.调整编译器代码的字体大小 前言: 1.打开编译器 2.在文 ...

最新文章

  1. MD5+Base64加密(密码常用加密方式)
  2. @MySQL的存储引擎
  3. 机器学习 预测模型_使用机器学习模型预测心力衰竭的生存时间-第一部分
  4. java nextlong_Java Random nextLong()方法与示例
  5. 转 mysql处理高并发,防止库存超卖
  6. 一名合格前端工程师的进阶指南!都来认真看一下吧
  7. 苹果与高通联合抢占 5G!
  8. 使用函数式编程方式-递归
  9. php 小写数字转大写,php 小写数字怎么转大写
  10. 全国计算机二级模拟考试软件,全国计算机等级考试模拟考试软件
  11. 图像加密之灰度加密:基于 密钥 × 解钥 ≡ 1 mod 灰度级 的一轮加密算法例子——lena图
  12. redhat7 安装 docker
  13. JS控制Video播放器(快进、后退、播放、暂停、音量大小)
  14. 现代计算机专业版官网,现代计算机期刊_投稿邮箱_杂志_编辑部_审稿_投稿须知...
  15. kafka auto.offset.reset值失效 earliest/latest详解
  16. 虚拟化中常见的三种硬盘模式
  17. 微信小程序 使用map组件 地图获取位置、移动选点、逆地址解析
  18. win7 32位系统搭建iphone开发环境
  19. 家装市场分析:2022年家装企业比例稳步上升
  20. 2016年全国高中数学联赛加试T1解答

热门文章

  1. 谁驱动公司?上帝赐予食物,魔鬼送来厨师
  2. 简单后端到前端展示数据
  3. 蚂蚁、字节、滴滴面试经历总结(都已过)
  4. android面试题之一(红黑联盟)
  5. 和iPhoto道别 iOS 10/OS X将有大调整
  6. 什么是跨域及解决跨域都有哪些方法?
  7. 【Sourcetree】推送远程仓库时,登录账户确认无误却一直失败的原因
  8. 开启Mysql主从复制
  9. autowire属性
  10. Spring @Autowire 源码分析