pyecharts⽣成各种图表
pyecharts 是⼀个⽤于⽣成 Echarts 图表的类库,pyecharts 是⼀个⽤于⽣成Echarts 图表的类库。实际上就是 Echarts 与 Python 的对接。使⽤ pyecharts 可以⽣成独⽴的⽹⻚,也可以在 flflask , Django 中集成使⽤。
特 点:
1.简洁的API设计,使⽤如丝滑般流畅,⽀持链式调⽤
2.囊括了30+种常⻅图表,应有尽有
3.⽀持主流Notebook环境,Jupyter Notebook和JupyterLab
4.可轻松集成⾄Flask,Sanic,Django等主流Web框架
5.⾼度灵活的配置项,可轻松搭配出精美的图表
6.详细的⽂档和示例,帮助开发者重启的上⼿项⽬
7.超过400个以上的地图⽂件,并⽀持原⽣百度地图,为地理数据可视化提供灵
活的⽀持
Bar(柱状图/条形图)
Bar3D(3D 柱状图)
Boxplot(箱形图)
EffectScatter(带有涟漪特效动画的散点图)
Funnel(漏⽃图)
Gauge(仪表盘)
Geo(地理坐标系)
Graph(关系图)
HeatMap(热⼒图)
Kline(K线图)
Line(折线/⾯积图)
Line3D(3D 折线图)
Liquid(⽔球图)
Map(地图)
Parallel(平⾏坐标系)
Pie(饼图)
Polar(极坐标系)
Radar(雷达图)
Sankey(桑基图)
Scatter(散点图)
Scatter3D(3D 散点图)
ThemeRiver(主题河流图)
WordCloud(词云图)
xAxis,yAxis:平⾯直⻆坐标系中的 x、y 轴。(Line、Bar、Scatter、
EffectScatter、Kline)
legend:图例组件。图例组件展现了不同系列的标记(symbol),颜⾊和名字。可以通
过点击图例控制哪些系列不显示。
label:图形上的⽂本标签,可⽤于说明图形的⼀些数据信息,⽐如值,名称等。
lineStyle:带线图形的线的⻛格选项(Line、Polar、Radar、Graph、Parallel)
markLine&markPoint:图形标记组件,⽤于标记指定的特殊数据,有标记线和标记点
两种。(Bar、Line、Kline)
tooltip:提示框组件,⽤于移动或点击⿏标时弹出数据内容
toolbox:右侧实用工具箱
from pyecharts.charts import Bar
from pyecharts import options
# 准备数据
province=['湖北','北京','安徽','云南','广东','南京','长沙','山东']
datal=[4000,6666,8888,9999,4444,3549,9000,1000]
data2=[5000,800,4000,600,5000,3000,800,7000]
# 创建图表对象
bar=Bar()
# 将数据渲染到表格上
bar.add_xaxis(province) # 设置X轴标题
bar.add_yaxis('确诊人数',datal)
bar.add_yaxis('死亡人数',data2)
# 设置图表
bar.set_global_opts(
title_opts=options.TitleOpts(title='重点城市疫情',subtitle='确诊人数和死亡人数'), ---- # 设置标题信息
toolbox_opts=options.ToolboxOpts() ----- # 显示工具栏
)
# 系列设置
bar.set_series_opts(
# 是否显示数值
label_opts=options.LabelOpts(is_show=False),
# 添加标记点
markpoint_opts=options.MarkPointOpts(
data=[
options.MarkPointItem(type_='min',name='最小值'),
options.MarkPointItem(type_='max',name='最大值'),
]
)
)
# 生成图表
bar.render('files/柱状图.html')--------#files为建立的package名称,用来存放做出来的柱状图
from pyecharts.charts import Pie
from pyecharts import options
# 准备数据
data=[('苹果',155),('三星',100),('华为',500),('vivo',400),('小米',300)]
# 创建图标对象
pie=Pie()
# 关联数据
pie.add(
# 设置系列名称
series_name='手机销量',
# 数据显示
data_pair=data,
# 空心部分和数据显示部分的比例
radius=['1%','99%'],-----#百分比根据实际情况进行修改(空心和实心)
rosetype='radius' ----- -- # 设置饼是不规则的,如果想要规则的话,也可以不写
)
# 额外系列设置
pie.set_global_opts(
title_opts=options.TitleOpts(title='国产手机销量')
)
pie.set_series_opts(
label_opts=options.LabelOpts(formatter='{b}:{d}%')-----# 例如小米30%
)
# 显示图表
pie.render('files/饼图.html')
from pyecharts.charts import Pie
from pyecharts import options
pie=(
Pie()
.add(
series_name='手机销量',
data_pair=[('小米',100),('红米',200)], ----#准备的数据
rosetype='radius',
radius=['30%','70%']
)
.set_global_opts(title_opts=options.TitleOpts(title='国产手机销量'))
.set_series_opts(
label_opts=options.LabelOpts(formatter='{b}:{d}%')
)
)
pie.render('templates/饼图.html')
from pyecharts.charts import Line
from pyecharts import options
# 准备数据
province=['湖北','北京','安徽','云南','广东','南京','长沙','山东']
datal=[4000,6666,8888,9999,4444,3549,9000,1000]
# 实例化一个图表对象
line=Line()
# 关联数据
line.add_xaxis(province)
line.add_yaxis(series_name='确诊人数',y_axis=datal,is_smooth=True) -------- # is_smooth=True为曲线,如果没有此项,则为直线
# 配置
line.set_global_opts(
title_opts=options.TitleOpts(title='严重感染的城市'),
toolbox_opts=options.ToolboxOpts()
)
line.set_series_opts(
markline_opts=options.MarkLineOpts(
#设置平均值的标记线
data=[options.MarkLineItem(name='平均值',type_='average')]
#设置最大值的标记线
data=[options.MarkLineItem(name='最大值',type_='max')]
)
)
line.render('files/折线图.html')
from pyecharts.charts import Map
from pyecharts import options
# 数据准备
data=[('云南',155),('河北',100),('河南',3000),('湖北',400),('山西',300)]
# 生成一个图表对象
map=Map()
# 渲染数据
map.add(series_name='国内感染城市',data_pair=data,maptype='world')-----# maptype='world'为世界地图,去掉就是中国地图
map.set_global_opts(
# 右下角标题
title_opts=options.TitleOpts(title='感染人数'),
# 隐藏顶部的数据导航显示
legend_opts=options.LegendOpts(is_show=True),
title_opts=options.TitleOpts(title='大标题',subtitle='副标题'),
# 设置颜⾊块标记范围
visualmap_opts=options.VisualMapOpts(
max_=500,
min_=0,
is_piecewise=True,
pieces=[ # 按照这个来显示
{"min":0,"max":100,"label":'0-100','color':'pink'},
{"min":100,"max":200,"label":'100-200','color':'yello'},
{"min":200,"max":1000,"label":'200-1000','color':'blue'},
{"min":1000,"max":2000,"label":'1000-2000','color':'orange'},
{"min":2000,"label":'>=2000','color':'red'},
]
)
)
# 生成地图
map.render('files/map.html')
from pyecharts.charts import Bar,Line,Grid
from pyecharts import options
# 先准备好数据,然后根据数据画折线图和柱状图,再将折线图和柱状图组合在一起
province=['湖北','北京','安徽','云南','广东','南京','长沙','山东']
datal=[4000,6666,8888,9999,4444,3549,9000,1000]
data2=[5000,800,4000,600,5000,3000,800,7000]
bar=Bar() # 实例化柱状图对象
line=Line() # 实例化折线图对象
# 画柱状图
bar.add_xaxis(province)
bar.add_yaxis('确诊人数',datal)
bar.add_yaxis('已故人数',data2)
bar.set_global_opts(
title_opts=options.TitleOpts(title='疫情信息')
)
# 画折线图
line.add_xaxis(province)
line.add_yaxis('确诊人数',datal)
line.add_yaxis('已故人数',data2)
# 创建组合对象
grid=Grid(init_opts=options.InitOpts(width='1800px',height='800px'))
# 将柱状图和折线图嵌入过来
grid.add(bar,grid_opts=options.GridOpts(
pos_top='100',
pos_left='60',
width='500',
height='400'
))
grid.add(line,grid_opts=options.GridOpts(
pos_top='50',
pos_left='100',
width='300',
height='400'
))
grid.render('files/组合.html')
注意:可以组合所有图表,根据实际情况