今日心情 :因为逛了街而莫名的开心
废话警告:心情好了就收不住,我可能要开始叨叨了。。。
鉴于目前在用的一直是FineReport(说人话:帆软),虽然自我感觉,用的熟练度已经可以了,但是考虑到技能的全面性,所以最近打算研究一下其他的数据可视化工具,比如:Echarts、PowerBI等。至于为什么不是直接上手Echarts,而是先从pyecharts入手,暂且不表(嘿嘿,不告诉你)。
顺便补充一句,之后我可能会出一个pyecharts的手册,有兴趣的可以关注一下。个人精力有限,会优先发布在公众号上。
版本信息
python3.6.6、pyecharts1.7.1
源码分析
准备好测试数据,我们以柱形图作为实例
from pyecharts.charts import Bar
x_data = ['分类1', '分类2', '分类3', '分类4', '分类5', '分类6', '分类7', '分类8', '分类9', '分类10', '分类11', '分类12', '分类13', '分类14', '分类15', '分类16', '分类17']
y_data = [0.72, 0.61, 0.98, 0.92, 0.67, 0.87, 0.6, 0.75, 0.96, 0.68, 0.71, 0.49, 0.35, 0.76, 0.81, 0.45, 0.51]
instance_bar = (
Bar()
.add_xaxis(xaxis_data=x_data)
.add_yaxis(yaxis_data=y_data, series_name='aaa')
)
instance_bar.render('11.html')
做出的图是下面介样的:
但是一般来说,金主爸爸怎么能让你这么轻松就完成任务?来来来,把背景色改了,配色换个,图太大了。。。。balabala一大堆。。。这时候要是搞不定,岂不是显的我没几把刷子?不能够啊,那咱就来好好研究一下。
变量instance_bar是类pyecharts.charts.Bar的实例。查看类Bar部分的源码,可以发现,它只有一个add_yaxis方法。从参数来看,这是一个配置y轴的方法,我们要找的图表大小、背景色等设置不在这里
但是,类Bar继承至类RectChart,这个类有extend_axis、add_xaxis、reversal_axis、overlap(组合图配置)等方法
除此外,它的初始化函数__init__中,接受参数init_opts,这个参数的默认值为opts.InitOpts()。定位到其源码部分,我们来看看这到底是个什么鬼
酱酱酱,好像发现了什么不得了的事情。按照经验,关于参数的用途,我们可以合理的做以下猜测:
width:配置图的宽度,单位是px
height:配置图的高度,单位是px
charts_id:配置图的id。这个在用选择器定位元素的时候有用,本文中暂不做相关介绍。
renderer:渲染方式(SVG或CANVAS),本文中暂不做相关介绍。
page_title:因为pyecharts最后可渲染为html,这个应该是html网页的标题。
theme:主题,尚不确定是不是配色主题。查看源码,可以发现其可取值信息如下
bg_color:背景色。结合Echarts官网的文档可以发现,颜色一般可使用 RGB 表示,比如 'rgb(128, 128, 128)' ,如果想要加上 alpha 通道,可以使用 RGBA,比如 'rgba(128, 128, 128, 0.5)',也可以使用十六进制格式,比如 '#ccc'
js_host:这个应该是引入的js文件的路径。本文中暂不做相关介绍。
animation_opts:这个结合Echarts官网的文档可以发现,应该是动画相关配置。本文中暂不做相关介绍。
图形基础设置
接下来,验证一下对于参数width、height、page_title、theme的猜想的正确性
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.options.global_options import ThemeType
x_data = ['分类1', '分类2', '分类3', '分类4', '分类5', '分类6', '分类7', '分类8', '分类9', '分类10', '分类11', '分类12', '分类13', '分类14', '分类15',
'分类16', '分类17']
y_data = [0.72, 0.61, 0.98, 0.92, 0.67, 0.87, 0.6, 0.75, 0.96, 0.68, 0.71, 0.49, 0.35, 0.76, 0.81, 0.45, 0.51]
instance_bar = (
Bar(init_opts=opts.InitOpts(bg_color='rgba(255,250,205,0.2)',
width='1000px',
height='600px',
page_title='page',
theme=ThemeType.MACARONS
)
)
.add_xaxis(xaxis_data=x_data)
.add_yaxis(yaxis_data=y_data, series_name='aaa')
)
instance_bar.render('11.html')
结果如下。可以发现背景色、图片大小、网页标题、配色都改变了。猜想变成现实了~叭错,晚上给自己加鸡腿~
image.png
有疑问可在评论处留言,欢迎大家一起交流探讨。考虑到网页我可能不经常看,若问题较为紧急,可关注微信公众号「燃烧吧数据」(id:data-fired),聊天框输入暗号:江湖救急,即可召唤小姐姐一枚~