pyecharts的繪圖原理詳解

其實(shí)學(xué)習(xí)任何一門編程語言,最重要的就是學(xué)習(xí)它的原理。今天給大家介紹的是,我認(rèn)為交互效果最好的一個(gè)python繪圖庫pyecharts,學(xué)會(huì)了絕對不虧。
1.pyecharts簡介
Echarts是一個(gè)由百度開源的數(shù)據(jù)可視化工具,憑借著良好的交互性,精巧的圖表設(shè)計(jì),得到了眾多開發(fā)者的認(rèn)可。而python是一門富有表達(dá)力的語言,很適合用于數(shù)據(jù)處理。當(dāng)數(shù)據(jù)分析遇上了數(shù)據(jù)可視化時(shí),pyecharts誕生了。
pyecharts分為v0.5和v1兩個(gè)大版本,v0.5和v1兩個(gè)版本不兼容,v1是一個(gè)全新的版本,因此我們的學(xué)習(xí)盡量都是基于v1版本進(jìn)行操作。
學(xué)習(xí)任何編程語言,其實(shí)官網(wǎng)是最好的老師,下面我們列出了echarts和pyecharts的官網(wǎng),比較幸運(yùn)的是,pyecharts是由一個(gè)中國人開發(fā)的,也存在一個(gè)中文網(wǎng)站,這樣學(xué)習(xí)起來就方便多了。
echarts官網(wǎng):
https://www.echartsjs.com/index.html
pyecharts官網(wǎng):
https://pyecharts.org/#/zh-cn/intro
安裝:
pip install pyecharts
查看版本:
print(pyecharts.version)
2.pyecharts繪圖邏輯
1)pyecharts繪圖邏輯說明
pyecharts是一個(gè)全新的可視化繪圖工具,因此它的繪圖邏輯完全不同于前面說到的matplotlib、seaborn、plotly。因此你想要學(xué)好這個(gè)可視化工具,最主要的就是要學(xué)會(huì)它的繪圖邏輯,俗話說:“知己知彼,百戰(zhàn)不殆”,你只有了解別人 ,才可以用起來順手呀。pyecharts的繪圖邏輯分為以下幾步。
① 選擇圖表類型; ② 聲明圖形類并添加數(shù)據(jù); ③ 選擇全局變量; ④ 顯示及保存圖表;
第一步是選擇圖表類型,基于自己的數(shù)據(jù)特點(diǎn),我們看看自己想要繪制那種圖形,需要什么圖形就導(dǎo)入什么圖形,下面我簡單列舉了幾個(gè)導(dǎo)入方法。
from?pyecharts.charts?import?Scatter??#?導(dǎo)入散點(diǎn)圖
from?pyecharts.charts?import?Line?????#?導(dǎo)入折線圖
from?pyecharts.charts?import?Pie??????#?導(dǎo)入餅圖
from?pyecharts.charts?import?Geo??????#?導(dǎo)入地圖
第二步是聲明圖形類并添加數(shù)據(jù),什么是圖形類呢?其實(shí)每一個(gè)圖形庫都是被pyecharts作者封裝成為了一個(gè)類,這就是所謂的面向?qū)ο螅覀冊谑褂眠@個(gè)類的時(shí)候,需要實(shí)例化這個(gè)類(觀察下面代碼)。聲明類之后,相當(dāng)于初始化了一個(gè)畫布,我們之后的繪圖就是在這個(gè)畫布上進(jìn)行。接下來要做的就是添加數(shù)據(jù),pyecharts中添加數(shù)據(jù)共有2種方式,一種是普通方式添加數(shù)據(jù),一種是鏈?zhǔn)秸{(diào)用(觀察下面代碼)來添加數(shù)據(jù),后面我會(huì)分章節(jié)一個(gè)個(gè)為大家介紹。
"下面繪制的是:正弦曲線的散點(diǎn)圖"
# 1.選擇圖表類型:我們使用的是散點(diǎn)圖,就直接從charts模塊中導(dǎo)入Scatter這個(gè)圖形。
from?pyecharts.charts?import?Scatter
import?numpy?as?np
x?=?np.linspace(0,2?*?np.pi,100)
y?=?np.sin(x)
(
?#?注意:使用什么圖形,就要實(shí)例化該圖形的類;
?# 2.我們繪制的是Scatter散點(diǎn)圖,就需要實(shí)例化散點(diǎn)圖類,直接Scatter()?即可;
?Scatter()?
?#?實(shí)例化類后,接著就是添加數(shù)據(jù),下面這種方式就是使用“鏈?zhǔn)秸{(diào)用”的方式繪圖;
?#?注意:散點(diǎn)圖有X、Y軸,因此需要分別給X軸、Y軸添加數(shù)據(jù);
?# 3.我們先給X軸添加數(shù)據(jù);
?.add_xaxis(xaxis_data=x)
?# 4.我們再給Y軸添加數(shù)據(jù);
?.add_yaxis(series_name="這個(gè)圖是干嘛的",y_axis=y)
).render_notebook()
第三步就是設(shè)置全局變量,用通俗的話說就是:調(diào)節(jié)各種各樣的參數(shù),把圖形變得更好看。常用的有標(biāo)題配置項(xiàng)、圖例配置項(xiàng)、工具配置項(xiàng)、視覺映射配置項(xiàng)、提示框配置項(xiàng)、區(qū)域縮放配置項(xiàng)。你也許不知道這幾個(gè)名詞是什么意思,但是不用擔(dān)心,你首先是學(xué)會(huì)了如何使用pyecharts繪圖后,再慢慢學(xué)習(xí)這方面的內(nèi)容。
默認(rèn)情況下圖例配置項(xiàng)和提示框配置項(xiàng)是顯示的,其它四個(gè)配置項(xiàng)默認(rèn)情況下是不顯示的,需要我們自己設(shè)置;

第四步是顯示及保存圖表,我們這里介紹兩種最常用的保存方式,如下所示。
.render("C:\\Users\\黃偉\\Desktop\\CSDN上傳圖像\\a.html")
#?如果不指定路徑,就是直接保存在當(dāng)前工作環(huán)境目錄下;
#?如果指定了路徑,就是保存到指定的目錄下;
#?注意:最終都是以html格式展示,發(fā)給其他任何人都可以直接打開看的;
.render_notebook()
#?如果我們使用的是jupyter notebook,直接使用這行代碼,可以直接顯示圖片;
3.選擇圖表類型
下面列舉出現(xiàn)的所有圖形都在charts字模塊下,我們利用如下代碼就可以導(dǎo)入各自對應(yīng)的圖形,在上面的敘述中,我已經(jīng)列舉了部分圖形的導(dǎo)入方式。
from pyecharts.charts import 函數(shù)名

注意:這里我們只列出了部分圖形,包括我們后面繪制地圖,也都是在pyecharts的子模塊charts模塊下,我們要記住這句導(dǎo)入相關(guān)圖形庫的代碼。
4.數(shù)據(jù)添加
1)如何添加數(shù)據(jù)呢?
像散點(diǎn)圖、折線圖等二維數(shù)據(jù)圖形,它既有X軸,又有Y軸,所以我們不僅要為X軸添加數(shù)據(jù),還要為Y軸添加數(shù)據(jù)。
.add_xaxis(xaxis_data=x)為X軸添加數(shù)據(jù); .add_yaxis(series_name='', y_axis=y)為Y軸添加數(shù)據(jù);
像餅圖、地圖這樣沒有X軸、Y軸區(qū)分的圖形,我們直接使用add()方法添加即可。
.add(series_name='', data_pair=[(i,j)for i,j in zip(lab,num)]);
2)pyecharts繪圖的兩種方式
上面我們已經(jīng)說過,pyecharts中繪圖有2種方式。第一種方式:普通方式;第二種方式:鏈?zhǔn)秸{(diào)用。仔細(xì)觀察下面的演示代碼,看看區(qū)別在哪里。
① 鏈?zhǔn)秸{(diào)用的方式繪圖
from?pyecharts.charts?import?Line
import?pyecharts.options?as?opts
import?numpy?as?np
x?=?np.linspace(0,2?*?np.pi,100)
y?=?np.sin(x)
(Line(init_opts=opts.InitOpts(width="700px",height="300px"))
?.add_xaxis(xaxis_data=x)
?.add_yaxis(series_name="繪制線圖",y_axis=y,label_opts=opts.LabelOpts(is_show=False))
?.set_global_opts(title_opts=opts.TitleOpts(title="我是標(biāo)題",subtitle="我是副標(biāo)題",title_link="https://www.baidu.com/"),
??????????????????tooltip_opts=opts.TooltipOpts(axis_pointer_type="cross"))
).render_notebook()
"""
關(guān)于全局配置項(xiàng)的代碼部分,你可能不懂,現(xiàn)在不懂沒什么關(guān)系!
"""
結(jié)果如下:

② 普通方式繪圖
from?pyecharts.charts?import?Pie
import?pyecharts.options?as?opts
num?=?[110,?136,?108,?48,?111,?112,?103]
lab?=?['哈士奇',?'薩摩耶',?'泰迪',?'金毛',?'牧羊犬',?'吉娃娃',?'柯基']
x?=?[(i,?j)for?i,?j?in?zip(lab,?num)]
print(x)
pie?=?Pie(init_opts=opts.InitOpts(width="700px",height="300px"))
pie.add(series_name='',data_pair=[(i,?j)for?i,?j?in?zip(lab,?num)])
pie.render_notebook()
結(jié)果如下:

3)關(guān)于series_name=""的說明
在添加數(shù)據(jù)時(shí)候,我們可以注意到series_name參數(shù)的存在,它是一個(gè)字符串。你也看到了,我們可以傳遞一個(gè)空字符串,也可以傳遞指定字符串,最終的作用有點(diǎn)類似于圖例的效果,但這里并不是設(shè)置圖例。你不需要過多的注意這個(gè)參數(shù),只需要牢記一點(diǎn):這個(gè)參數(shù)必須有,必須寫,哪怕你傳遞一個(gè)空字符串,也要寫,因?yàn)椴粚戇@個(gè)參數(shù),會(huì)報(bào)錯(cuò)。
5.設(shè)置全局配置項(xiàng)
當(dāng)我們學(xué)會(huì)了如何使用pyecharts繪圖,并且已經(jīng)繪制出來了某個(gè)圖形,此時(shí)這個(gè)圖形并不一定好看。這就需要我們學(xué)會(huì)使用全局配置項(xiàng),進(jìn)行圖形參數(shù)的調(diào)節(jié)與設(shè)置。
所有的全局配置項(xiàng)的使用,都是在options這個(gè)子模塊下,我們在設(shè)置全局配置項(xiàng)的時(shí)候,記得導(dǎo)入這個(gè)模塊。這部分涉及到的參數(shù)太多太雜,當(dāng)你覺得某個(gè)圖形需要怎么改的時(shí)候,一般肯定是有對應(yīng)的參數(shù)進(jìn)行處理的,你要相信你能想到的,別人大神肯定是都想到了,這個(gè)時(shí)候你就需要學(xué)會(huì)使用官網(wǎng)。
import pyecharts.options as opts 使用options配置項(xiàng),在 pyecharts中,一切皆O(shè)ptions。 全局配置項(xiàng)可通過調(diào)用set_global_options()方法進(jìn)行設(shè)置。

注意:默認(rèn)情況下圖例配置項(xiàng)和提示框配置項(xiàng)是顯示的,其他四個(gè)配置項(xiàng)默認(rèn)情況下是不顯示的,需要我們自己設(shè)置。
6.顯示及保存圖表
.render()默認(rèn)將會(huì)在當(dāng)前工作目錄下生成一個(gè) render.html 的文件,支持path參數(shù),進(jìn)行自定義文件保存位置,最終文件你可以可以發(fā)送給任何人,直接用瀏覽器打開,交互效果仍然存在。Jupyter Notebook中直接調(diào)用 .render_notebook()隨時(shí)隨地渲染圖表。

更多閱讀
特別推薦

點(diǎn)擊下方閱讀原文加入社區(qū)會(huì)員
