Pyecharts(一) —— 配置项&图表类型

Pyecharts(一) —— 配置项&图表类型

大家可以关注知乎或微信公众号的share16,我们也会同步更新此文章。

   Pyecharts是一个用于生成Echarts图表的库。Echarts是百度开源的一个数据可视化JS库,用Echarts生成的图可视化效果非常棒;pyecharts是为了与Python进行对接,方便在Python中直接使用数据生成图。

一、图形参数配置

   图形的参数配置是数据可视化的基础,pyecharts中的参数配置比较简单,可以分为全局配置项和系列配置项, 配置项的参考链接🔗

1.1 全局配置项

   全局配置项,位于此文档中(/lib/python3.10/site-packages/pyecharts/options /global_options.py),可用set_global_options设置。

  • 基本元素配置项:主要包括InitOpts(初始化:含画布高/宽度、网页标题、图表主题、背景颜色等)、ToolBoxFeatureOpts(工具箱工具:含保存图片、配置项还原等)、ToolboxOpts(工具箱:含是否显示工具栏组件、工具栏icon的布局朝向等)、TitleOpts(标题:含主/副标题文本等)、LegendOpts(图例:含图例类型等)等;
  • 坐标轴配置项:主要包括AxisLineOpts(坐标轴轴线:含是否显示坐标轴、轴线是否在另一个轴的0刻度上等)、AxisTickOpts(坐标轴刻度:含是否显示刻度、坐标轴刻度长度等)、AxisOpts(坐标轴:含坐标轴类型、名称、刻度最小/大值等)等;
  • 原生图形配置项:主要包括GraphicGroup、GraphicItem等;

1.2 系列配置项

   系列配置项,位于此文档中(/lib/python3.10/site-packages/pyecharts/options /series_options.py),可用set_series_options设置。

  • 样式类配置项:主要包括ItemStyleOpts(图元样式:含图形颜色、阴线图形颜色等)、TextStyleOpts(文字样式:含文字颜色、字体、大小等)、LabelOpts(标签:含是否显示标签、标签文字的设置等)等;
  • 标记类配置项:主要包括MarkPointItem(标记点数据项)、MarkLineItem(标记线数据项)等;
  • 其他类配置项:主要包括EffectOpts(涟漪特效)、AreaStyleOpts(区域填充样式)等;

1.3 运行环境

   在可视化分析中,pyecharts可以在Jupyter Notebook和Jupyter Lab环境中运行;还可以生成HTML和图片

  • 在Jupyter Notebook中运行:如b.render_notebook()等;
  • 在Jupyter Lab中运行:如bar.load_javascript()、bar.render_notebook()等;
  • 生成HTML:如bar.render(‘xxx.html’)等;
  • 生成图片:要提前安装selenium、snapshot_selenium包,代码如下
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot
make_snapshot(snapshot,t.render(),'t.png',browser='Safari') 
"""
若使用的是谷歌,browser='Chrome'
勾选浏览器菜单栏:开发-允许远程自动化
"""

二、图表类型

   在pyecharts中,根据图表的调用方法、数据源格式的不一样,可大致分为以下几类(图表类型的参考链接🔗):

  • 直角坐标系图表:如折线图、柱状图、散点图、箱形图、热力图、K线图等;
  • 地理坐标系图表:如Geo(地理坐标图)、Map(区域地图)、BMap(百度地图)等;
  • 树型图表:如树图、矩形树图等;
  • 3D图表:如3D柱状图、3D折线图、3D曲面图等;
  • 组合图表:如时间线轮播多图、顺序多图、并行多图等;
  • 其他图表:如日历图、漏斗图、仪表盘、饼图、极坐标图、雷达图、旭日图、词云等;

2.1 直角坐标系图表

   以柱状图为例,此外还有:xy轴翻转、层叠多图(将多个直角坐标系的图表层叠到一个坐标轴中进行展示)。

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

x = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo']
y1 = [123, 153, 89, 107, 98]
y2 = [102, 135, 88, 100, 79]

b = Bar()
b.add_xaxis(x)
b.add_yaxis(series_name='y1',y_axis=y1)
b.add_yaxis(series_name='y2',y_axis=y2)
b.set_global_opts(title_opts=opts.TitleOpts('不同商家各品牌的手机销量',padding=[10,60]))
b.set_series_opts(label_opts=opts.LabelOpts(position='insideTop'))
b.render_notebook()

''' xy轴翻转 '''
b.reversal_axis()
b.render_notebook()

在这里插入图片描述
在这里插入图片描述

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

x = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo']
y1 = [123, 153, 89, 107, 98]
y2 = [102, 135, 88, 100, 79]
rate = [1.21, 1.13, 1.01, 1.07, 1.24]

b = (Bar()
     .add_xaxis(x)
     .add_yaxis('y1',y1,stack='a1',bar_width=50,)
     .add_yaxis('y2',y2,stack='a1',bar_width=50)
     .extend_axis(yaxis=opts.AxisOpts(name='比率',position='right'))
     .extend_axis(yaxis=opts.AxisOpts(name='销量',position='left'))
     .set_series_opts(label_opts=opts.LabelOpts(position='insideTop')) 
     )

l = (Line()
     .add_xaxis(x)
     .add_yaxis('比率',rate,yaxis_index=1,z=2)
    )

b.overlap(l) #层叠多图
b.render_notebook()

在这里插入图片描述

2.2 地理坐标系图表

   地理图表中的参数maptype的取值,可查看此文档(/lib/python3.10/site-packages/pyecharts/datasets/map_filenames.json)。

   以Map、Geo为例:

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

data = [('广东',61),('湖北',85),('湖南',115),('四川',137),('重庆',119),('河北',80),\
        ('黑龙江',66),('浙江',117),('山西',52),('安徽',99),('河南',101),('山东',75),('西藏',53)]
map = Map()

# 关闭鼠标缩放和平移漫游,不显示红点
map.add('',data,maptype='china',is_roam=False,is_map_symbol_show=False)
# 视觉组件是必须的,需通过视觉组件的颜色来展示数据大小
map.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=120))

map.render_notebook()

在这里插入图片描述

''' Geo '''
from pyecharts.charts import Geo
import pyecharts.options as opts

data = [('广东',61),('湖北',85),('湖南',115),('四川',137),('重庆',119),('河北',80),\
        ('黑龙江',66),('浙江',117),('山西',52),('安徽',99),('河南',101),('山东',75),('西藏',53)]
geo = Geo()

# is_roam:关闭鼠标缩放和平移漫游
# type_取值有scatter、effectScatter、heatmap、lines等
geo.add_schema(maptype='china',is_roam=False)
geo.add('',data,type_='heatmap')

# 视觉组件是必须的,需通过视觉组件的颜色来展示数据大小
geo.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=120))

geo.render_notebook()

在这里插入图片描述

2.3 树型图表

''' Tree '''
from pyecharts.charts import Tree
import pyecharts.options as opts

data = [{'children':[{'name':'B'},
                     {'children':[{'children':[{'name':'I'}],'name':'E'},{'name':'F'}],
                      'name':'C'},
                     {'children':[{'children':[{'name':'J'}, {'name':'K'}],'name':'G'},{'name':'H'}],
                      'name':'D'}],
         'name':'A'}]

tree = Tree()
tree.add('',data)
tree.render_notebook()

在这里插入图片描述

2.4 3D图表

''' Bar3D '''
from pyecharts.charts import Bar3D
import pyecharts.options as opts

d = [['Apple','s1',123],['Huawei','s1',153],['Xiaomi','s2',89],['oppo','s2',107]]

b3d = Bar3D()
b3d.add('',d,)
b3d.set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=160))
b3d.render_notebook()

在这里插入图片描述

2.4 组合图表

from pyecharts import options as opts
from pyecharts.charts import Bar,Timeline
from pyecharts.faker import Faker
import random

attr = Faker.choose()
t1  = Timeline()# 创建 Timeline对象
for i in range(2000,2022):
    attr1 = random.shuffle(list(attr)) #将序列的所有元素随机排序
    bar = (Bar()
           .add_xaxis(random.sample(attr,len(attr)))
           .add_yaxis('Data',Faker.values(),label_opts=opts.LabelOpts(position = 'right'))
           .reversal_axis()
           .set_global_opts(title_opts = opts.TitleOpts("{}".format(i),pos_left = '50%'),\
                            legend_opts = opts.LegendOpts(pos_right = '10%'))
          )
    t1.add(bar,'{}年'.format(i))
# t1.add_schema 可设置播放时间等参数
t1.render_notebook()

在这里插入图片描述

2.5 其他图表(如Page)

   其他图表,有日历图Calendar、漏斗图Funnel、仪表盘Gauge、饼图Pie、极坐标图Polar、雷达图Radar、旭日图Sunburst、词云WordCloud等;其使用方法,详见上述链接。

''' 
DraggablePageLayout : 是令每个模块可以被任意拖动、缩放,便于人工布局;
SimplePageLayout : 是令每个模块自动水平居中对齐;
若不指定的话,所有模块就会靠左对齐;
'''

p = Page(layout=Page.DraggablePageLayout)
p.add(p1,p2)
p.render('hh.html') 
p.render_notebook()

p.save_resize_html(source='hh.html',
                   cfg_file='/XXXXXX/chart_config.json',
                   dest='/XXXXXX/chart.html')

''' 
使用浏览器打开 hh.html文件,对图表进行拖拉/调整位置或大小;
调整到一个适合的布局时,点击左上方的 Save Config按钮,下载chart_config.json配置文件;
source:生成的html文件名,如上;
cfg_file:下载的配置文件(chart_config.json)的地址
dest:要生成的新的html文件的路径
''' 

谢谢大家 🌹

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值