导读:Python数据可视化的库有很多,常见的有matplotlib、pyplot、Seaborn、pyecharts等。
pyecharts是一款将python与echarts相结合的数据可视化库,可用于制作 Echarts 图表,输出动态的可视化图表,。Echarts 是百度开源的一个数据可视化 JS 库。
以下基于win系统的Python3版本pyecharts0.5.10进行。
pyecharts中文官方文档:https://pyecharts.org/#/zh-cn/intro
目录:
pyecharts库安装:
常用国内镜像源:
基本语法(通过案例学习 ):
使用pyecharts-snapshot插件保存图形:
常用图形函数:
1、柱状图/条形图 [堆叠(柱状)图] Bar.add()
2、饼图/环形图/玫瑰图Pie.add()
3、折线图/面积图Line.add()
4、极坐标系Polar.add()
5、散点图/三维气泡图scatter.add()
6、带有闪烁动画的散点图EffectScatter.add()
7、箱体图Boxplot.add()
8、雷达图Rader.add()
9、漏斗图Funnel.add()
10、仪表盘Gauge.add()
11、词云图WordCloud.add()
12、地理坐标系Geo.add()
13、地图Map.add()
14、关系图Grap.add()
15.水球图Liquid.add()
16、平行坐标系Parallel.add()
17、桑基图Sankey.add()
18.自定义图形Grid.add()
19、图标叠加 Overlap.add()
20、同一网页按顺序展示多个图page.add()
21、时间线轮播多张图timeline
主题配置
(1)不改变主题参数
(2)更改主题
整个页面使用同一个主题:
基本配置
1.在Bar()函数里添加的参数
2.在add()函数里添加的参数
更多示例、参考学习资源/博客:
pyEcharts目前有0.5及以下版本和1.0以上版本,新版的pyecharts发生了许多变化。 最为明显的是以前调整变量的命令现在都发生了改变。网上大部分教程都是0.5及以下版本。这里使用清华镜像安装0.5.10
安装代码:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyecharts==0.5.10
使用镜像源的安装方法:
pip install -i https://pypi.doubanio.com/simple/ 包名
#导入柱状图bar
from pyecharts import Bar
#设置柱状图的主标题与副标题
bar=Bar("柱状图(标题)","一年的降水量和蒸发量(副标题)")
#配置主题
bar.use_theme('dark') # 设置背景色为“暗色”。需要设置主题背景色时调用use_theme() 函数
#设置x轴数据
columns=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
#设置y轴数据
data_1=[2.0,4.9,7.0,23.2,25.6,76.7,135.6,162.2,32.6,20.0,6.4,3.3]
data_2=[2.6,5.9,9.0,26.4,28.7,70.7,175.6,182.2,48.7,18.8,6.0,2.3]
#添加柱状图的数据及配置项
bar.add(
"降水量",columns,data_1, #绘图关键信息:图例名称(注释==label),x轴数据,y轴数据
mark_line=["average"], #标记平均值
mark_point=["max","min"], #标记极值
is_stack =False, #数据堆叠,同个类目轴上系列配置相同的stack 值可以堆叠放置。is_stack = True表示堆叠在一起绘制堆叠(柱状)图
bar_category_gap ='20%', #类目轴柱状距离,默认20%
is_more_utils=True #提供更多实用工具按钮
)
bar.add(
"蒸发量",columns,data_2,
mark_line=["average"],
mark_point=["max","min"],
is_stack =False,
bar_category_gap ='20%',
is_more_utils=True
# is_convert = True , X 轴与 Y 轴交换,将柱状图改为条形图
)
# bar.print_echarts_options() # 该行打印配置项,方便调试时使用
#生成本地文件(默认为.html文件)
bar.render('./picture1.html') #将html文档命名为picture1
运行结果图:
关键代码解读:
add() : 主要方法,用于添加图表的数据和设置各种配置项
render():默认将会在根目录下生成一个 render.html 的文件,支持 path 参数,设置文件保存位置,如 render(r"e:\my_first_chart.html"),文件用浏览器打开。
print_echarts_options() :打印输出图表的所有配置项
show_config() :打印输出图表的所有配置项
Note: 可以按右边的下载按钮将图片下载到本地,如果想要提供更多实用工具按钮,请在 add() 中设置 is_more_utils 为 True
如果想直接将图片保存为 png, pdf, gif 格式的文件,可以使用 pyecharts-snapshot。 使用该插件请确保你的系统上已经安装了 Nodejs 环境。
1._幻像: 康达安装幻象
2.* pyecharts 快照 : pip 安装 pyecharts 快照
2.调用 render 方法 bar.render(path='snapshot.png') 文件结尾可以为 svg/jpeg/png/pdf/gif。 请注意,svg 文件需要你在初始化 bar 的时候设置 renderer='svg'。
import random
from pyecharts import Bar
#from pyecharts import configure
#configure(global_theme='vintage')
X_AXIS = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
bar = Bar("我的第一个图表", "这里是副标题")
bar.use_theme("roma")
bar.add("商家A", X_AXIS, [random.randint(10, 100) for _ in range(6)])
bar.add("商家B", X_AXIS, [random.randint(10, 100) for _ in range(6)])
bar.render()
bar.render(path='snapshot.png')
from pyecharts import Geo
data = [
("海门", 9),("鄂尔多斯", 12),("招远", 12),("舟山", 12),("齐齐哈尔", 14),("盐城", 15),
("赤峰", 16),("青岛", 18),("乳山", 18),("金昌", 19),("泉州", 21),("莱西", 21),
("日照", 21),("胶南", 22),("南通", 23),("拉萨", 24),("云浮", 24),("梅州", 25)...]
geo = Geo(
"全国主要城市空气质量",
"data from pm2.5",
title_color="#fff",
title_pos="center",
width=1200, height=600,
background_color='#404a59')
attr, value = geo.cast(data)
geo.add("", attr, value,
visual_range=[0, 200],
visual_text_color="#fff",
symbol_size=15,
is_visualmap=True)
geo.show_config()
geo.render()
from pyecharts import Geo
data = [("海门", 9), ("鄂尔多斯", 12), ("招远", 12), ("舟山", 12), ("齐齐哈尔", 14), ("盐城", 15)]
geo = Geo("全国主要城市空气质量", "data from pm2.5", title_color="#fff", title_pos="center",
width=1200, height=600, background_color='#404a59')
attr, value = geo.cast(data)
geo.add("", attr, value, type="effectScatter", is_random=True, effect_scale=5)
geo.show_config()
geo.render()
【数据接口:pyecharts地图数据接口】安装下列地图数据包
pip install echarts-countries-pypkg
pip install echarts-china-provinces-pypkg
pip install echarts-china-cities-pypkg
pip install echarts-china-counties-pypkg
pip install echarts-china-misc-pypkg
pip install echarts-united-kingdom-pypkg
Map.add() 方法签名
add(
name,attr,value,
maptype = 'china',
is_roam = True,
is_map_symobol_show = True
**kwargs
)
maptype -> str: 地图类型,支持China,world,北京,天津,上海,湖南,湖北,……363个二线城市
is_roam -> bool/str 是否开启鼠标缩放,漫游等,默认 True,若只想开启缩放/平移 设置scale/move 设置成 True 开启
is_map_symobol_show 是否显示地图标记,默认 True。
案例代码:
from pyecharts import Map
value = [155,10,66,78]
attr = ['汕头市','汕尾市','揭阳市','肇庆市']
map = Map('广东地图示例',width = 1200,height = 600)
map.add('',attr,value,maptype = '广东',
is_visualmap = True,
visual_text_color = '#000',
is_label_show = True
)
map.render('./html/map02.html')
(以上下或左右形式绘图)
(在同一个图里绘图)
利用第一张图表为基础,将后面的数据画在第一张图上。Line/ Bar/ Kline/ Scatter/ EffectScatter
#EffectScatter + Line 叠加
from pyecharts import Line,EffectScatter,Overlap
attr = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]
v1 = [2.0,4.9,7.0,23.2,25.6,76.7,135.6,162.2,170.1,178.3,175.4,176.5]
line = Line('线性_闪烁图示例')
line.add('',attr,v1,is_random = True)
es = EffectScatter()
es.add('',attr,v1,effect_scale=8) #闪烁
overlop = Overlap()
overlop.add(line) #必须先添加line,在添加es
overlop.add(es)
overlop.render()
echarts 自带 dark 主题, pyecharts 也自带了 dark。 echarts-themes-pypkg 提供了 vintage, macarons, infographic, shine 和 roma 主题。
安装:
pip install echarts-themes-pypkg
from pyecharts import Bar
v1 = [20,25,35,24]
str1 = ['回忆','生活','现实','失败']
bar1 = Bar('testBar_theme','Theme')
bar1.add('test01',str1,v1,is_more_utils = True)
bar1.render()
显示效果:
单个图换主题:
from pyecharts import Bar
v1 = [20,25,35,24]
str1 = ['回忆','生活','现实','失败']
bar = Bar('testBar_theme','Theme')
bar.add('test01',str1,v1,is_more_utils = True)
# 更换单个图表主题
# 其他主题:vintage,macarons,infographic,shine,roma
bar.use_theme("vintage")
bar.render()
显示效果:
from pyecharts import configure
configure(global_theme='vintage')
显示效果:
title -> str
主标题文本,支持 \n 换行,默认为 “”
subtitle -> str
副标题文本,支持 \n 换行,默认为 “”
width -> int
画布宽度,默认为 800(px)
height -> int
画布高度,默认为 400(px)
title_color -> str
主标题文本颜色,默认为 ‘#000’
subtitle_color -> str
副标题文本颜色,默认为 ‘#aaa’
background_color -> str
画布背景颜色,默认为 ‘#fff’
page_title -> str
指定生成的 html 文件中 标签的值。 默认为’Echarts’
renderer -> str
指定使用渲染方式,有 ‘svg’ 和 ‘canvas’ 可选,默认为 ‘canvas’。 3D 图仅能使用 ‘canvas’(canvas和svg区别请参考:https://blog.csdn.net/helloword_chen/article/details/49788309)
具体使用代码:
from pyecharts import Bar
v1 = [20,25,35,24]
str1 = ['回忆','生活','现实','失败']
# 默认Bar()第一个参数为 主标题,第二个参数为副标题
bar1 = Bar('testBar_theme','Theme',page_title = '我的柱状图',title_color ='#3367FF',subtitle_color= '#3367FF',background_color = '#5AB5FF')
bar1.add('vintage',str1,v1,is_more_utils = True)
bar1.render(r"H:\PyCoding\FlaskCoding\Test_all\test0608\test01.html")
显示效果
is_random -> bool
是否随机排列颜色列表,默认为 False
label_color -> list
自定义标签颜色。 全局颜色列表,所有图表的图例颜色均在这里修改。 如 Bar 的柱状颜色,Line 的线条颜色等等。
is_label_show -> bool
是否正常显示标签,默认不显示。 标签即各点的数据项信息
label_pos -> str
标签的位置,Bar 图默认为’top’。 有’top’, ‘left’, ‘right’, ‘bottom’, ‘inside’,’outside’可选
label_text_color -> str
标签字体颜色,默认为 “#000”
label_text_size -> int
标签字体大小,默认为 12
is_random -> bool
是否随机排列颜色列表,默认为 False
label_formatter -> 功能
回调函数使用
def label_formatter(params):
return params.value + ' [Good!]'
(params: Object|Array) => string
参数 params 是 formatter 需要的单个数据集。格式如下:
{
componentType: 'series',
// 系列类型
seriesType: string,
// 系列在传入的 option.series 中的 index
seriesIndex: number,
// 系列名称
seriesName: string,
// 数据名,类目名
name: string,
// 数据在传入的 data 数组中的 index
dataIndex: number,
// 传入的原始数据项
data: Object,
// 传入的数据值
value: number|Array,
// 数据图形的颜色
color: string,
}
具体使用代码
from pyecharts import Bar
def label_formatter(params):
return params.data +'分'
v1 = [20,25,35,24]
attr = ['回忆','生活','现实','失败']
bar = Bar('testBar_color','Theme',page_title = '我的柱状图')
# 注意 label_color的属性值为 list(列表)
bar.add("test_X", attr, v1, is_label_show=True,label_color=['#5AB5FF'],label_text_color ='#3367FF',label_formatter=label_formatter)
bar.render()
显示效果
1、Python 数据可视化?
2、Python + PyEcharts——数据可视化
3、Python可视化神器——pyecharts的超详细使用指南!
4、【Python | 做更好的数据可视化】pyecharts进阶用法(一)
5、pyecharts学习笔记