今日心情 :因?yàn)楣淞私侄拈_心
廢話警告:心情好了就收不住,我可能要開始叨叨了。。。
鑒于目前在用的一直是FineReport(說人話:帆軟),雖然自我感覺,用的熟練度已經(jīng)可以了,但是考慮到技能的全面性,所以最近打算研究一下其他的數(shù)據(jù)可視化工具,比如:Echarts、PowerBI等。至于為什么不是直接上手Echarts,而是先從pyecharts入手,暫且不表(嘿嘿,不告訴你)。
順便補(bǔ)充一句,之后我可能會(huì)出一個(gè)pyecharts的手冊(cè),有興趣的可以關(guān)注一下。個(gè)人精力有限,會(huì)優(yōu)先發(fā)布在公眾號(hào)上。
pyecharts的GitHub地址:https://github.com/pyecharts/pyecharts
Echarts官網(wǎng):https://www.echartsjs.com/zh/index.html
版本信息
python3.6.6、pyecharts1.7.1
源碼分析
準(zhǔn)備好測(cè)試數(shù)據(jù),我們以柱形圖作為實(shí)例
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')
做出的圖是下面介樣的:

但是一般來說,金主爸爸怎么能讓你這么輕松就完成任務(wù)?來來來,把背景色改了,配色換個(gè),圖太大了。。。。balabala一大堆。。。這時(shí)候要是搞不定,豈不是顯的我沒幾把刷子?不能夠啊,那咱就來好好研究一下。
變量instance_bar是類pyecharts.charts.Bar的實(shí)例。查看類Bar部分的源碼,可以發(fā)現(xiàn),它只有一個(gè)add_yaxis方法。從參數(shù)來看,這是一個(gè)配置y軸的方法,我們要找的圖表大小、背景色等設(shè)置不在這里

但是,類Bar繼承至類RectChart,這個(gè)類有extend_axis、add_xaxis、reversal_axis、overlap(組合圖配置)等方法

除此外,它的初始化函數(shù)__init__中,接受參數(shù)init_opts,這個(gè)參數(shù)的默認(rèn)值為opts.InitOpts()。定位到其源碼部分,我們來看看這到底是個(gè)什么鬼

醬醬醬,好像發(fā)現(xiàn)了什么不得了的事情。按照經(jīng)驗(yàn),關(guān)于參數(shù)的用途,我們可以合理的做以下猜測(cè):
- width:配置圖的寬度,單位是px
- height:配置圖的高度,單位是px
- charts_id:配置圖的id。這個(gè)在用選擇器定位元素的時(shí)候有用,本文中暫不做相關(guān)介紹。
- renderer:渲染方式(SVG或CANVAS),本文中暫不做相關(guān)介紹。
- page_title:因?yàn)閜yecharts最后可渲染為html,這個(gè)應(yīng)該是html網(wǎng)頁的標(biāo)題。
-
theme:主題,尚不確定是不是配色主題。查看源碼,可以發(fā)現(xiàn)其可取值信息如下
- bg_color:背景色。結(jié)合Echarts官網(wǎng)的文檔可以發(fā)現(xiàn),顏色一般可使用 RGB 表示,比如
'rgb(128, 128, 128)',如果想要加上 alpha 通道,可以使用 RGBA,比如'rgba(128, 128, 128, 0.5)',也可以使用十六進(jìn)制格式,比如'#ccc' - js_host:這個(gè)應(yīng)該是引入的js文件的路徑。本文中暫不做相關(guān)介紹。
- animation_opts:這個(gè)結(jié)合Echarts官網(wǎng)的文檔可以發(fā)現(xiàn),應(yīng)該是動(dòng)畫相關(guān)配置。本文中暫不做相關(guān)介紹。
圖形基礎(chǔ)設(shè)置
接下來,驗(yàn)證一下對(duì)于參數(shù)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')
結(jié)果如下。可以發(fā)現(xiàn)背景色、圖片大小、網(wǎng)頁標(biāo)題、配色都改變了。猜想變成現(xiàn)實(shí)了~叭錯(cuò),晚上給自己加雞腿~

有疑問可在評(píng)論處留言,歡迎大家一起交流探討??紤]到網(wǎng)頁我可能不經(jīng)??矗魡栴}較為緊急,可關(guān)注微信公眾號(hào)「燃燒吧數(shù)據(jù)」(id:data-fired),聊天框輸入暗號(hào):江湖救急,即可召喚小姐姐一枚~
