pyecharts

一、pyecharts

      pyecharts=python+echarts    

     而Echarts 是一个由百度开源的数据可视化工具,有着良好的交互性,精巧的图表设计能力。当Python与Echarts结合就形成了pyecharts.

     有matplotlib和seaborn为什么要用pyecharts?      

     pyecharts是一种交互式的可视化库,图形展示跟matplotlib相比就好比河流与池塘。pyecharts更加灵活美观,作图更加灵活、巧妙。

  官方API文档:https://pyecharts.org/#/zh-cn/intro

二、pyecharts特性 

  • 简洁的 API 设计,使用如丝滑般流畅,支持链式调用
  • 囊括了 30+ 种常见图表,应有尽有 支持主流 Notebook 环境,Jupyter Notebook JupyterLab
  • 可轻松集成至 Flask,Django 等主流 Web 框架
  • 高度灵活的配置项,可轻松搭配出精美的图表
  • 详细的文档和示例,帮助开发者更快的上手项目
  • 多达 400+ 地图文件以及原生的百度地图,为地理数据可视化提供强有力的支持

三、pyecharts的安装和导入

安装:      pip(3) install pyecharts

使用:    

         import pyecharts      

        或    

         from pyecharts.charts import Bar    #调用柱状图    

         from pyecharts import options as opts   #调用设置    

         from pyecharts.globals import ThemeType  #调用内置主题 

四、绘图步骤

pyecharts_第1张图片 

五、基本绘图

X轴添加数据: add_xaxis(xaxis_data=x)

Y轴添加数据: add_yaxis(series_name='', y_axis=y)

文档:pyecharts - A Python Echarts Plotting Library built with love.

六、 图形类

pyecharts_第2张图片

 基本示例:https://gallery.pyecharts.org/#/Line/README

import pyecharts
#查看当前版本
print(pyecharts.__version__)

 

 简单 柱状图

import numpy as np
import pandas as pd
from pyecharts.charts import Bar

#数据x轴,y轴
x=list(range(1,8))
y=[145, 176, 150, 186, 179, 142, 165]

#调用柱状图对象
bar=Bar()
#添加x轴,y轴
bar.add_xaxis(x)
bar.add_yaxis("身高",y)

#显示自动生成html,默认保存在安装路径
# bar.render()

#保存到指定的位置
bar.render('d:/height.html')

# 在notebook中显示图形
bar.render_notebook()

pyecharts_第3张图片

七、 常用图

pyecharts_第4张图片

 柱状图 bar

#柱状图
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.globals import ThemeType #导入主题类型
# V1 版本开始支持链式调用
bar = (
    Bar(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION)) #初始化主题
    .add_xaxis(["衬衫", "毛衣", "领带", "裤子", "风衣", "高跟鞋", "袜子"])  #添加x轴
    .add_yaxis("商家A", [114, 55, 27, 101, 125, 27, 105])   #添加y轴
    .add_yaxis("商家B", [57, 134, 137, 129, 145, 60, 49])   #添加y轴
    .set_global_opts(title_opts=opts.TitleOpts(title="某商场销售情况")) #全局设置
)
bar.render_notebook()  #显示图形

pyecharts_第5张图片

折线图 line

import pyecharts.options as opts
from pyecharts.charts import Line
from pyecharts.faker import Faker


(
  Line()
  .add_xaxis(Faker.choose())
  .add_yaxis('商家A',Faker.values(),is_smooth=True)
  .add_yaxis('商家B',Faker.values(),is_smooth=True)
  .set_global_opts(title_opts=opts.TitleOpts(title="折线图-平滑"))
).render_notebook()

pyecharts_第6张图片

 

散点图  scatter

#散点图  Scatter()
from pyecharts.charts import Scatter
import numpy as np

#数据
x=np.linspace(0,2*np.pi,100)  #0--2*pi等分为100份,共100个点
y=np.sin(x)
y2=np.cos(x)

#对象
(
 Scatter()
 .add_xaxis(x)
 .add_yaxis('sin函数',y)
 .add_yaxis('cos函数',y2)

).render_notebook()

 pyecharts_第7张图片

 散点图 特效 scatter

#散点图  Scatter()
from pyecharts import options as opts
from pyecharts.charts import Scatter
from pyecharts.faker import Faker

(
  Scatter()
  .add_xaxis(Faker.choose())
  .add_yaxis('商家A',Faker.values())
  .add_yaxis('商家B',Faker.values())
  .set_global_opts(
        title_opts=opts.TitleOpts(title="散点图大小"),
        visualmap_opts=opts.VisualMapOpts(type_="size", max_=150, min_=20),
  )
).render_notebook()

 pyecharts_第8张图片

 

 饼图 pie

#饼图
from pyecharts.charts import Pie #饼类
from pyecharts.faker import Faker  #数据集
from pyecharts import options as opts #选项
#数据对['芒果', 86]
# [list(i) for i in zip(Faker.choose(),Faker.values())]
(
   Pie() #对象
  .add( " ",
       [list(i) for i in zip(Faker.choose(),Faker.values())],#添加数据
       radius=["50%", "85%"], #半径
      ) 
  .set_global_opts(
        title_opts=opts.TitleOpts(title="饼图信息"),#标题
        legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"), #图例位置
                  ) 
  .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}"))  #显示标签数据
).render_notebook()

 pyecharts_第9张图片

 

地理图表 geo

# 地理图表
from pyecharts import options as opts
from pyecharts.charts import Geo
from pyecharts.faker import Faker
from pyecharts.globals import ChartType

(
   Geo() #对象
  .add_schema(maptype='china') #地图类型
  .add( '省份', #名称
        [list(x) for x in zip(Faker.provinces,Faker.values())], #数据对
        type_=ChartType.EFFECT_SCATTER  #特效
      )
  .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) #标签数据隐藏
  .set_global_opts(
         title_opts=opts.TitleOpts(title="Geo-地理图表"),
         visualmap_opts=opts.VisualMapOpts(), 
  )
).render_notebook()

 pyecharts_第10张图片

 词云图 wordcloud

# 词云图
# 词云图过滤掉大量的低频低质的文本信息,使得浏览者只要一眼扫过文本就可领略文本的主旨
# 词云图是数据可视化的一种常见形式,特别适合于文本数据的处理和分析
from pyecharts import options as opts
from pyecharts.charts import WordCloud
from pyecharts.globals import SymbolType


words = [
    ("Macys", 6181),
    ("Amy Schumer", 4386),
    ("Jurassic World", 4055),
    ("Charter Communications", 2467),
    ("Chick Fil A", 2244),
    ("Planet Fitness", 1868),
    ("Pitch Perfect", 1484),
    ("Express", 1112),
    ("Home", 865),
    ("Johnny Depp", 847),
    ("Lena Dunham", 582),
    ("Lewis Hamilton", 555),
    ("KXAN", 550),
    ("Mary Ellen Mark", 462),
    ("Farrah Abraham", 366),
    ("Rita Ora", 360),
    ("Serena Williams", 282),
    ("NCAA baseball tournament", 273),
    ("Point Break", 265),
]

(
  WordCloud()
  .add("aaa",  # 系列名称
        words,   # 系列数据项,[(word1, count1), (word2, count2)]
        word_size_range=[20, 100], #单词字体大小范围
        shape=SymbolType.DIAMOND    # 词云图轮廓
      )
  .set_global_opts(title_opts=opts.TitleOpts(title="词云图金刚石"))
).render_notebook()

 pyecharts_第11张图片

地图 map

#地图
from pyecharts import options as opts
from pyecharts.charts import Map
from pyecharts.faker import Faker

(
  Map()
  .add('地图',[list(x) for x in zip(Faker.provinces,Faker.values())],'china')
  .set_global_opts(title_opts=opts.TitleOpts(title="Map信息"))
).render_notebook()

pyecharts_第12张图片

层叠图 overlap

# 层叠图
from pyecharts import options as opts
from pyecharts.charts import Line,Scatter
from pyecharts.faker import Faker

#数据
x=Faker.choose()
line = (
    Line()
    .add_xaxis(x)
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
    .set_global_opts(title_opts=opts.TitleOpts(title="层叠图-(折线+散点)"))
)
scatter = (
    Scatter()
    .add_xaxis(x)
    .add_yaxis("商家A", Faker.values())
    .add_yaxis("商家B", Faker.values())
)
#层叠
line.overlap(scatter)
#显示
line.render_notebook()

pyecharts_第13张图片

 

八、高级绘图 

 (1) 全局配置项:set_globals_optspyecharts_第14张图片

 (2)一些特效和设置

pyecharts_第15张图片

 #图表:图表函数+数据+全局配置+系列配置(可有可无)
#全局配置项:图表实例+set_global_opts(配置项名称=opts,配置项类名())
help(bar.set_global_opts)

pyecharts_第16张图片

 柱状图特效1

import numpy as np
import pandas as pd
from pyecharts.charts import Bar
from pyecharts import options as opts  #导入配置项
from pyecharts.globals import ThemeType #导入主题类型

#数据x轴,y轴
x=list(range(1,8))
y1=[145, 176, 150, 186, 179, 142, 165]
y2=[60,45,45,68,67,36,78,56]

#调用柱状图对象
#初始化设置
bar=Bar(init_opts=opts.InitOpts(width='700px',height='500px',theme=ThemeType.MACARONS))
#添加x轴,y轴
bar.add_xaxis(x)
bar.add_yaxis("身高",y1)
bar.add_yaxis("体重",y2)

#全局设置
bar.set_global_opts(title_opts=opts.TitleOpts(title="人标题",subtitle='副标题'),toolbox_opts=opts.ToolboxOpts(is_show=True))  #添加标题和工具箱

# 在notebook中显示图形
bar.render_notebook()

pyecharts_第17张图片

 柱状图特效2 

#数据x轴,y轴
x=list(range(1,8))
y1=[145, 176, 150, 186, 179, 142, 165]
y2=[60,45,45,68,67,36,78,56]

#调用柱状图对象
#初始化设置
bar=Bar(init_opts=opts.InitOpts(width='700px',height='500px',theme=ThemeType.ESSOS))
#添加x轴,y轴
bar.add_xaxis(x)
bar.add_yaxis("体重",y2,stack='stack1')#stack表示堆积柱状图
bar.add_yaxis("身高",y1,stack='stack1')

#全局设置
bar.set_global_opts(title_opts=opts.TitleOpts(title="人标题"))  

# 在notebook中显示图形
bar.render_notebook()

 pyecharts_第18张图片

  柱状图特效3


#数据x轴,y轴
x=list(range(1,8))
y1=[145, 176, 150, 186, 179, 142, 165]
y2=[60,45,45,68,67,36,78,56]

#调用柱状图对象
#初始化设置
bar=Bar(init_opts=opts.InitOpts(width='700px',height='500px',theme=ThemeType.ESSOS))
#添加x轴,y轴
bar.add_xaxis(x)
bar.add_yaxis("体重",y2,stack='stack1')
bar.add_yaxis("身高",y1,stack='stack1')#stack表示堆积柱状图

#全局设置
bar.set_global_opts(title_opts=opts.TitleOpts(title="人标题",pos_left='0%',subtitle='副标题'),#标题
                   toolbox_opts=opts.ToolboxOpts(is_show=True),#工具箱
                   visualmap_opts=opts.VisualMapOpts(is_show=True,type_="color"),#视觉映射
                   legend_opts=opts.LegendOpts(is_show=True),#图例
                   datazoom_opts=opts.DataZoomOpts(is_show=True,type_="slider")#区域缩放
                   )  

# 在notebook中显示图形
bar.render_notebook()

pyecharts_第19张图片

 

你可能感兴趣的:(python数据分析,python,开发语言)