【新手0基础7天学会python可视化第三天:precharts(一)】内附详细代码

简介

pyecharts 是一个用于生成 ECharts 图表的 Python 库Echarts 是由百度开发的基于JavaScript的开源数据可视化工具库,具有良好的交互性,精巧的图表设计,在数据可视化领域应用广泛。pyecharts 让 Python 用户能够方便地使用 Python 代码创建 ECharts 图表。

想深入了解的同学可以看一下pyecharts的官方文档

基础知识

绘图逻辑依照四步,

1.明确要画什么图,并进行实例化
2.使用.add()函数添加元素(包括数据、轴、刻度标签等)
3.使用options配置项,对图形界面进行修改配置
4.用.render()渲染生成一个独立的网页
下面我们来详细讲解。

导入库

老规矩,没有下载过pyecharts的童鞋先下载一下

pip install pyecharts

常用图表

图表类名图表类名
柱状图Bar()折线图Line()
散点图Scatter()热力图HeatMap()
箱线图Boxplot()日历图Calendar()
漏斗图Funnel()饼图Pie()
雷达图Radar()桑基图Sankey()
阳光图Sunburst()平行坐标系图Parallel()
地理坐图Geo()地图Map()

以上大多图表我们下面都会讲解,当然还有许多其他的图表,大家可以去探索。

配置项

配置项主要包括两个,全局配置项(set_global_opts)以及系列配置项(set_series_opts())。

全局配置项

在这里插入图片描述
全局配置项主要负责对图形界面区域进行修改配置,包括图表中的标题、图例、工具箱、色谱、提示框、时间轴等。
下面给出几个常用的全局配置项的配置方法。

种类配置方法
主标题 副标题opts.TitleOpts(title=‘’, subtitle=‘’, item_gap=10 )
图形显示及排列opts.LegendOpts(is_show=True, orient=‘horizontal’)
工具箱显示及排列opts.ToolboxOpts(is_show=True, orient=‘horizontal’)
提示框显示及触发条件opts.TooltipsOpst(is_show=True, trigger=‘item’)
色谱显示及相关设置opts.VisualMapOpts(is_show=True, type_=‘color’, min_=0, max_=100, is_piecewise=False)

系列配置项

系列配置项主要控制图表中的文本、线样式、标记、标签等。
同样给出几个常用的系列配置项方法。

种类配置方法
标签显示及文字设置opts.LabelOpts(is_show=True, position=‘top’, font_size=10 )
线条显示及形状opts.LineStyleOpts(is_show=True, width=1, type_=‘solid’)
标记点内容及形状opts.MarkPointOpts(data=, symbol=‘circle’)
轴类型及位置opts.AxisOpts(type_=‘value’, name=‘’)

柱状图

好了,了解了pyecharts相关的配置,接下来我们就可以开始绘图了(~ ̄▽ ̄)~
我们先来一张简单的柱状图来过一遍整个流程

from pyecharts.charts import Bar #实例化导入库

#Jupyter Lab 渲染的时候在顶部声明 Notebook 类型,必须在引入 pyecharts.charts 等模块前声明
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB

from pyecharts import options as opts #options配置
#使用链式调用
bar = (
    Bar() #创建一个对象(实例化,要画什么图)
    .add_xaxis(['洗衣机','冰箱','微波炉','电磁炉','电视','空调']) #.add()函数添加元素(图中的一切元素)
    .add_yaxis('商家A',[234,210,3236,1560,745,960])
    .set_global_opts(title_opts=opts.TitleOpts(title="主标题",subtitle="副标题")) #标题配置项 #set_global_opts全局配置项
    #或者直接使用字典参数.set_global(title_opts=("text":"主标题","subtext":"副标题"))
      )
bar.load_javascript() #Jupyter Lab 第一次渲染的时加载 javascripe 文件
bar.render_notebook() #在notebook中显示图表
#bar.render会生成本地html文件,默认会在当前目录生成render.heml文件
#也可以传入路径参数,如bar.render('mycharts.html')

在这里插入图片描述
当然了,上述方法是链式调用方法,我们还可以对他进行单独调用,代码如下,会产生和上图一样的效果。

#单独调用
bar = Bar() #创建一个对象(实例化,要画什么图)
bar.add_xaxis(['洗衣机','冰箱','微波炉','电磁炉','电视','空调']) #.add()函数添加元素(图中的一切元素)
bar.add_yaxis('商家A',[234,210,3236,1560,745,960])
bar.set_global_opts(title_opts=opts.TitleOpts(title="主标题",subtitle="副标题")) #标题配置项 #set_global_opts全局配置项

好了,现在我们已经了解了大概的流程,下面我们开始升级难度。

分组柱状图

绘制一个按年份分组的柱状图,代码如下

from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB   #JupyterHub中加入这两句正常显示图片

s_bar = Bar(init_opts=opts.InitOpts(width='800px',
                                   height='400px',
                                   theme='light',
                                   bg_color='#cccccc'))
s_bar.add_xaxis(['spring','summer','fall','winter'])

s_bar.add_yaxis('2011',s_count1_2011,gap="0%")
s_bar.add_yaxis('2012',s_count1_2012,gap="0%")

s_bar.set_global_opts(
    title_opts=opts.TitleOpts(title="用户量柱状图"),
    yaxis_opts=opts.AxisOpts(name="count"),
    xaxis_opts=opts.AxisOpts(name="season")
)
s_bar.load_javascript()
s_bar.render_notebook()

在这里插入图片描述

折线图

下面我们绘制一个简单的分组折线图

#2011、2012年,各月份用户量波动趋势
from pyecharts.charts import Line
#折线图
m_line = Line()

m_line.add_xaxis(range(1,13))

m_line.add_yaxis('2011',m_count_2011['count'])
m_line.add_yaxis('2012',m_count_2012['count'])

m_line.set_global_opts(
    title_opts=opts.TitleOpts(title="2011、2012各月份用户量趋势"),
    yaxis_opts=opts.AxisOpts(name="count"),
    xaxis_opts=opts.AxisOpts(name="month")
)
m_line.render_notebook()

在这里插入图片描述

饼图

基础饼图

我们再来学习如何绘制一张基础饼图吧。

from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB   #JupyterHub中加入这两句正常显示图片
from pyecharts import options as opts
from pyecharts.charts import Pie
# 饼图
s_pie = Pie()

s_pie.add('2011', [list(z) for z in zip([1, 2, 3, 4], s_count['2011'])]) #将列表[1, 2, 3, 4]和s_count数据框中'2011'列的数据进行配对,然后将每对元素转换为列表,最终得到一个包含多组数据的列表

s_pie.set_global_opts(
    title_opts=opts.TitleOpts(title="2011各季度用户量比例"), #主标题设置
    legend_opts=opts.LegendOpts(is_show=True)  # 设置图例显示
)

s_pie.set_series_opts(
    label_opts=opts.LabelOpts(formatter="{b}:{d}%") #设置图例选项
)

s_pie.render_notebook()

在这里插入图片描述

环状图

下面再来进阶一下,画一个环状图,和饼图有异曲同工之处。

# 环形图
s_pie=Pie()

s_pie.add('2011',[list(z) for z in zip([1,2,3,4],s_count['2011'])],radius=[80,120] #这是设置环形图的内外半径。80 是内半径,120 是外半径,通过设置不同的内外半径,将原本的饼图变成了环形图
         )
s_pie.set_global_opts(
    title_opts = opts.TitleOpts(title="2011各季度用户量比例"),    legend_opts=opts.LegendOpts(is_show=True) )

s_pie.set_series_opts(
    label_opts = opts.LabelOpts(formatter="{b}:{d}%")#通过 opts.LabelOpts 类设置标签的显示格式。{b} 表示数据项的名称(这里是季度编号),{d} 表示数据项所占的百分比,所以标签会以 “季度编号:百分比” 的格式显示
)
s_pie.render_notebook()

在这里插入图片描述

南丁格尔玫瑰图

南丁格尔玫瑰图的绘制也类似,具体方法如下。

#南丁格尔玫瑰图
s_pie=Pie()

s_pie.add('2011',
          [list(z) for z in zip(range(1,13),m_count_2011['count'])],
          rosetype='area'#设置玫瑰图的类型为 “面积模式”,也就是扇区的面积和数据值成正比。
         )
s_pie.set_global_opts(
    title_opts = opts.TitleOpts(title="2011各季度用户量比例"),   
    legend_opts=opts.LegendOpts(orient='vertical',
                               pos_left='left',
                               pos_top='middle') )

s_pie.set_series_opts(
    label_opts = opts.LabelOpts(formatter="{b}:{d}%")#通过 opts.LabelOpts 类设置标签的显示格式。{b} 表示数据项的名称(这里是季度编号),{d} 表示数据项所占的百分比,所以标签会以 “季度编号:百分比” 的格式显示
)
s_pie.render_notebook()

在这里插入图片描述

多图

在matplotlib中,我们可以使用subplot来绘制多图,那么pyecharts中该如何做呢?只需要分别添加,然后将这两个饼图组合在一个图表中就可以了

#多图
s_pie=Pie()
s_pie.add('2011',
          [list(z) for z in zip([1,2,3,4],s_count['2011'])],
          center=['30%','50%'],
          radius=[60,80] #这是设置环形图的内外半径。80 是内半径,120 是外半径
         )
s_pie.add('2012',
          [list(z) for z in zip([1,2,3,4],s_count['2012'])],
          center=['65%','50%'],
          radius=[0,40] #这是设置环形图的内外半径。0 是内半径,40 是外半径,通过设置不同的内外半径,将原本的饼图变成了环形图
         )

s_pie.set_global_opts(
    title_opts = opts.TitleOpts(title="2011、2012各季度用户量比例"),    legend_opts=opts.LegendOpts(is_show=True) )

s_pie.set_series_opts(
    label_opts = opts.LabelOpts(formatter="{b}:{d}%")#通过 opts.LabelOpts 类设置标签的显示格式。{b} 表示数据项的名称(这里是季度编号),{d} 表示数据项所占的百分比,所以标签会以 “季度编号:百分比” 的格式显示
)
s_pie.render_notebook()

在这里插入图片描述

结语

今天的内容主要介绍了一些简单的图形绘制,明天我们会继续讲解其他的图形,包括雷达图、日历图、平行坐标系图、地图等等,包括我们最后会完成一个可视化大屏的制作,生成一个HTML文件,帮助大家更好的进行可视化工作。

创作不易,亲亲求点赞求收藏呀ヾ(=・ω・=)o

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值