數(shù)據(jù)可視化 課件 第6-8章 Plotly數(shù)據(jù)可視化進(jìn)階、Pyecharts入門、Pyecharts進(jìn)階_第1頁
數(shù)據(jù)可視化 課件 第6-8章 Plotly數(shù)據(jù)可視化進(jìn)階、Pyecharts入門、Pyecharts進(jìn)階_第2頁
數(shù)據(jù)可視化 課件 第6-8章 Plotly數(shù)據(jù)可視化進(jìn)階、Pyecharts入門、Pyecharts進(jìn)階_第3頁
數(shù)據(jù)可視化 課件 第6-8章 Plotly數(shù)據(jù)可視化進(jìn)階、Pyecharts入門、Pyecharts進(jìn)階_第4頁
數(shù)據(jù)可視化 課件 第6-8章 Plotly數(shù)據(jù)可視化進(jìn)階、Pyecharts入門、Pyecharts進(jìn)階_第5頁
已閱讀5頁,還剩504頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1數(shù)據(jù)可視化第二章plotly基本圖形繪制12345線性圖條形圖餅圖甘特圖PlotlyExpress2線性圖1.31線性圖在plotly中對于線性圖而言,不是單一的折線圖這種,其中包括了散點(diǎn)圖,折線圖以及兩種結(jié)合的圖形。在plotly中一貫統(tǒng)稱為線形圖,在plotly中一般用go.scatter來繪制。線性圖41線性圖散點(diǎn)圖散點(diǎn)圖,顧名思義就是由一些散亂的點(diǎn)組成的圖表,這些點(diǎn)在哪個位置,是由其X值和Y值確定的。所以也叫做XY散點(diǎn)圖。而這些散落的點(diǎn)經(jīng)過散點(diǎn)圖描繪之后有的時候可以反映變量之間的相互關(guān)系。在plotly中一般用go.scatter命令來繪制,而這個函數(shù)對參數(shù)的封裝往往采用的就是復(fù)合字典賦值參數(shù)。51線性圖散點(diǎn)圖中scatter的常用的參數(shù)如下:1.mode:圖形格式,這個決定包括lines、markers、lines+markers等,但散點(diǎn)圖一般指定的是markers.2.x,y:圖像上的點(diǎn)的坐標(biāo),設(shè)置x軸,y軸的坐標(biāo)數(shù)據(jù)3.opacity:透明度,取值范圍0~14.markes:指定點(diǎn)的顏色,大小以及樣式等相關(guān)參數(shù),采用復(fù)合字典賦值的方法,其中有size,colors,symbol.symbol是設(shè)置點(diǎn)的樣式。5.name:指定的這條軌跡的名稱61線性圖準(zhǔn)備工作71線性圖81線性圖散點(diǎn)圖91線性圖散點(diǎn)圖點(diǎn)的基本設(shè)置101線性圖散點(diǎn)圖每個點(diǎn)的基本設(shè)置symbol參數(shù)賦值為一個數(shù)值也可以賦值為一個列表,而用列表的話就是對每個點(diǎn)可以選擇不同的樣式,但列表元素個數(shù)要與點(diǎn)的個數(shù)一致。111線性圖氣泡圖氣泡圖可用于展示三個變量之間的關(guān)系。它與散點(diǎn)圖類似,繪制時將一個變量放在橫軸,另一個變量放在縱軸,而第三個變量則用氣泡的大小來表示。排列在工作表的列中的數(shù)據(jù)(第一列中列出x值,在相鄰列中列出相應(yīng)的y值和氣泡大小的值)可以繪制在氣泡圖中。氣泡圖與散點(diǎn)圖相似,但氣泡圖一般反映三維的數(shù)據(jù),也可以用于思維數(shù)據(jù),而散點(diǎn)圖一般常用于二維數(shù)據(jù)。在氣泡圖中往往用氣泡的大小來作為第三個維度,而在四維氣泡圖中,一般用透明度,顏色等因素來表示第四維度的數(shù)據(jù)。在plotly中還是用go.scatter()來繪制氣泡圖,121線性圖三維氣泡圖131線性圖四維氣泡圖表示方法一141線性圖四維氣泡圖表示方法二151線性圖在plotly中還提供一個plotly.express,這個是plotly中一個簡易操作的高級界面,可對“整潔”數(shù)據(jù)進(jìn)行操作并生成易于樣式化的圖形。以官網(wǎng)的一個示例給大家展示一下它的效果。161線性圖折線圖折線圖也稱線圖,折線圖是用直線段將各數(shù)據(jù)點(diǎn)連接起來而組成的圖形,以折線方式顯示數(shù)據(jù)的變化趨勢。折線圖可以顯示隨時間(根據(jù)常用比例設(shè)置)而變化的連續(xù)數(shù)據(jù),因此非常適用于顯示在相等時間間隔下數(shù)據(jù)的趨勢。在折線圖中,類別數(shù)據(jù)沿水平軸均勻分布,所有值數(shù)據(jù)沿垂直軸均勻分布。171線性圖折線圖中scatter的常用的參數(shù)如下:1.x,y:設(shè)置x,y軸坐標(biāo)數(shù)據(jù)2.mode:圖形格式,lines,markers,text,也可以用lines+markers3.name:線圖名稱4.opacity:透明度參數(shù),取值范圍為0~15.line:線條的設(shè)置,包括寬度,顏色格式6.markers:點(diǎn)的格式,設(shè)置顏色,大小,格式等181線性圖折線圖示例1191線性圖線圖結(jié)合201線性圖雙折線21條形圖2.222條形圖柱狀圖也稱條形圖,是一種以長方形的長度為變量的統(tǒng)計圖表。長條圖用來比較兩個或以上的價值(不同時間或者不同條件),只有一個變量,通常利用于較小的數(shù)據(jù)集分析。長條圖亦可橫向排列,或用多維方式表達(dá)。有水平條形圖,基本柱狀圖,多組柱狀圖,層疊柱狀圖,瀑布柱狀圖等,在plotly這個第三方庫當(dāng)中,一般用go.Bar()來繪制條形圖232條形圖Bar()函數(shù)一些常用參數(shù):1.base:柱狀圖起始的參數(shù)2.dx,dy:x,y坐標(biāo)的步進(jìn)值,默認(rèn)為13.Marker:數(shù)據(jù)節(jié)點(diǎn),包括顏色格式等參數(shù),其中包括外圍的邊框線設(shè)置4.orientation:圖形顯示參數(shù),包括‘v’(垂直模式)和‘h’(水平模式)5.Name:繪制的軌跡名稱參數(shù)6.Textfont:文本字體參數(shù),包括字體名稱,顏色,大小等7.Text:每個柱狀圖的文本元素8.Textposition:文本元素的位置參數(shù),包括:

"inside"|"outside"|"auto"|"none";9.visible:布爾變量,切換圖形顯示開關(guān);10.Opacity:柱狀的透明度11.Textangle:設(shè)置文本的傾斜角度242條形圖柱狀圖常用參數(shù):1.barmode:設(shè)置相同坐標(biāo)的條形圖位置。包括:stack(疊加)、group(并列)、overlay(覆蓋)、relative(相對);2.bargroupgap:設(shè)置相同位置條形圖之間的間隙,范圍:0-1;3.bargap:設(shè)置相鄰位置條形圖之間的間隙,范圍:0-1;4.orientation:圖形顯示方向參數(shù),包括:v(垂直模式)和h(水平模式);252條形圖準(zhǔn)備工作262條形圖柱狀圖272條形圖柱狀簇柱狀簇就是多個基本柱狀結(jié)合而成的,比如要比較兩個公司一周內(nèi)每天銷售額的差異,可以利用柱狀簇來進(jìn)行展示和分析,這種柱狀簇也可單一的分析某一個類別不同時間的變化,也可以比較不同類別在同一時間上進(jìn)行的比較。282條形圖柱狀簇292條形圖層疊柱狀圖層疊柱狀圖其實類似柱狀簇,只不過相當(dāng)把多個柱狀整合為一個,以累加的方式進(jìn)行疊加,最后轉(zhuǎn)為基本柱狀圖的形式。唯一和基本柱狀圖的不同是,它是多個柱體的累加。常用來反映一些金融股票方面在不同形式的資產(chǎn)和負(fù)債的分布。302條形圖層疊柱狀圖312條形圖水平條形圖水平條形圖其實和繪制柱狀圖類似,只不過就是對Bar()中的orientation進(jìn)行設(shè)置,設(shè)置顯示為水平就可,其他和繪制上面的柱狀圖,柱狀簇,層疊柱狀圖類似,下面大家可以通過這幾個例子進(jìn)行學(xué)習(xí)。322條形圖水平條形圖332條形圖水平條形圖342條形圖瀑布圖瀑布圖是一種比較常用的柱狀圖,顯示正值(收入)和負(fù)值(支出)對總量的貢獻(xiàn)來顯示結(jié)果累積的過程。從這個案例我們可以看出,瀑布圖采用絕對值與相對值結(jié)合的方式,表達(dá)多個特定數(shù)值之間的數(shù)量變化關(guān)系。這種由麥肯錫顧問公司所獨(dú)創(chuàng)的圖表類型,因為形似瀑布流水而被稱之為瀑布圖。瀑布圖具有自上而下的流暢效果,也可以稱為階梯圖或橋圖,在企業(yè)經(jīng)營分析、財務(wù)分析中使用較多,用以表示企業(yè)成本的構(gòu)成、變化等情況。瀑布圖可以很好的反映數(shù)據(jù)在不同時期或受不同因素影響的程度及結(jié)果,還可以直觀反映出數(shù)據(jù)的增減變化,在工作表中非常實用。352條形圖瀑布圖36餅圖3.373餅圖餅圖,或稱餅狀圖,是一個劃分為幾個扇形的圓形統(tǒng)計圖表,用于描述量、頻率或百分比之間的相對關(guān)系。在餅圖中,每個扇區(qū)的弧長(以及圓心角和面積)大小為其所表示的數(shù)量的比例。這些扇區(qū)合在一起剛好是一個完全的圓形。顧名思義,這些扇區(qū)拼成了一個切開的餅形圖案。在plotly

中一般用pie()函數(shù)來繪制餅圖,這里的餅圖包括基本餅圖和環(huán)狀餅圖。餅圖383餅圖pie()函數(shù)常用參數(shù):1.values:每個扇區(qū)的數(shù)值大??;2.labels:列表,餅圖中每一個扇區(qū)的文本標(biāo)簽;3.hole:設(shè)置環(huán)形餅圖空白內(nèi)徑的半徑,取值0~1。默認(rèn)值為0,參數(shù)是與外徑的比值;4.hoverinfo:當(dāng)用戶與圖表交互時,鼠標(biāo)指針顯示的參數(shù),包括如下任何組合:"label"、"text"、"value"、"percent","name"、"all"、"none"或"skip",組合時用"+"拼接,默認(rèn)為"all"。若設(shè)置了“none”或“skip”,則鼠標(biāo)懸停時不會顯示任何信息。但是,如果是設(shè)置了“none”,則仍會觸發(fā)單擊和懸停事件;5.pull:列表,元素為0~1之間的數(shù)值,默認(rèn)為0,用于設(shè)置各個扇區(qū)突出顯示的本例393餅圖pie()函數(shù)常用參數(shù):6.sort:布爾變量,是否進(jìn)行扇區(qū)排序7.rotation:扇區(qū)旋轉(zhuǎn)角度,范圍是0~360,默認(rèn)值為08.direction:設(shè)置餅圖方向。clockwise表示:順時針、counterclockwise(默認(rèn))表示:逆時針9.name:名稱參數(shù)10.opacity:透明度參數(shù),范圍是0-111.domain:范圍,設(shè)置各個扇形的大小12.marker:數(shù)據(jù)節(jié)點(diǎn)參數(shù),包括大小顏色格式等403餅圖基本餅圖基本餅圖是統(tǒng)計分析中的一種常用的圖表之一,常用來描繪某一個類別在整體中的占比,比如最常見的性別比例,這個是很典型的示例,通過餅圖的面積能夠很好的反映占比情況。在plotly中一般用pie()函數(shù)。413餅圖準(zhǔn)備工作423餅圖基本餅圖1433餅圖基本餅圖2443餅圖基本餅圖3453餅圖環(huán)形餅圖環(huán)形圖與餅圖類似,但又有區(qū)別。環(huán)形圖中間有一個“空洞”,每個樣本用一個環(huán)來表示,樣本中的每一部分?jǐn)?shù)據(jù)用環(huán)中的一段表示。因此環(huán)形圖可顯示多個樣本各部分所占的相應(yīng)比例,從而有利于構(gòu)成的比較研究。通俗的來講環(huán)形餅圖就是圖表中的‘甜甜圈’,其實環(huán)形餅圖和基本餅圖在繪制中是類似的,不過環(huán)形餅圖相對餅圖來說就多一個空洞形式。463餅圖環(huán)形餅圖47甘特圖4.484甘特圖甘特圖又稱為橫道圖,通過條形來顯示項目的進(jìn)度、時間的安排等與時間相關(guān)的情況。甘特圖能夠很直觀反映項目安排以及項目進(jìn)展這些內(nèi)容。在plotly這個第三方庫中,用的函數(shù)是plotly.figure_factory

中的create_gantt函數(shù),通過參數(shù)事件Task,開始Start,結(jié)束Finish的時間的數(shù)據(jù)來繪制甘特圖。甘特圖494甘特圖create_gantt函數(shù)常用參數(shù):1.df:任務(wù)名稱起止時間2.colors:每個任務(wù)的顏色3.index_col:索引方式,常用的有數(shù)字索引和類別索引、4.show_colorbar:是否顯示圖例,True和False5.showgrid_x,showgrid_y:設(shè)置是否顯示橫縱坐標(biāo)軸6.title:甘特圖的名稱7.bar_width:項目條的寬度504甘特圖514甘特圖524甘特圖數(shù)字索引數(shù)字索引簡單點(diǎn)的來說就是將傳入的數(shù)據(jù)按照數(shù)字索引方式對任務(wù)進(jìn)行分類,這個數(shù)字是每個項目的進(jìn)度,具有相同索引值的條形將會呈現(xiàn)相同的顏色,也可以說通過顏色來判斷項目完成的進(jìn)度。534甘特圖數(shù)字索引544甘特圖類別索引除了數(shù)字索引這種方式,還有一種比較常用的索引方式是類別索引,就是將所有的項目分為未完成,完成,進(jìn)行中這三種類別,通過不同顏色對這些類別進(jìn)行分類,可以直觀的分析項目進(jìn)展,及時的對項目進(jìn)行重新安排和調(diào)整。554甘特圖類別索引56PlotlyExpress5.575PlotlyExpressPlotlyExpress是Plotly.py的高級封裝,它為復(fù)雜的圖表提供了一個簡單的語法。這個是在plotly基礎(chǔ)上對它進(jìn)行更高級的封裝,簡化了plotly繪制圖表命令,讓繪制圖表更加的簡單。在plotly4.0版本出現(xiàn)后,plotlyexpress屬于plotly這個繪圖庫的一部分,在每個PlotlyExpress函數(shù)都會返回一個graph_objects.Figure對象,該對象的data和layout已根據(jù)提供的參數(shù)進(jìn)行了預(yù)填充。而且它還在內(nèi)部封裝一些默認(rèn)的數(shù)據(jù)集,方便初學(xué)者學(xué)習(xí),是一個很方便的繪圖庫。PlotlyExpress585PlotlyExpress內(nèi)置數(shù)據(jù)集Plotlyexpress中提供了幾個常用來做統(tǒng)計分析的數(shù)據(jù)集:gapminder,wind,iris,tips,election,carshare,tips這幾個數(shù)據(jù)集,類似python的另一個繪圖庫Seaborn,通過相應(yīng)的命令導(dǎo)入,然后數(shù)據(jù)框格式的數(shù)據(jù)。595PlotlyExpress內(nèi)置數(shù)據(jù)集605PlotlyExpress導(dǎo)入數(shù)據(jù)集615PlotlyExpress主題調(diào)色板在plotlyexpress中主題是指控制圖形范圍的設(shè)置,如邊距、字體、背景顏色、刻度定位等??梢允褂媚0鍏?shù)應(yīng)用任何命名的主題或主題對象:有三個內(nèi)置的Plotly主題可以使用,分別是plotly,plotly_white和plotly_dark。是通過template這個參數(shù)來改變。PlotlyExpress將使用活動模板的layout.colorway屬性中的顏色順序,默認(rèn)活動模板是plotly使用plotly顏色順序的顏色。但是,可以從px.colors.qualitative模塊中選擇以下任何內(nèi)置定性顏色序列,或者定義自己的顏色序列。625PlotlyExpress調(diào)色板635PlotlyExpress案例示范以plotlyexpress中tips數(shù)據(jù)集為例。total_bill:總費(fèi)用tip:小費(fèi) Sex:性別Smoker:是否吸煙 Day:就餐星期中哪一天Time:就餐的時間Size:就餐的人數(shù)645PlotlyExpress總消費(fèi)和小費(fèi),性別之間的關(guān)系655PlotlyExpress總消費(fèi)和小費(fèi),性別之間的關(guān)系665PlotlyExpress總消費(fèi)和小費(fèi),性別之間的關(guān)系675PlotlyExpress小提琴圖提琴圖是一種用于顯示數(shù)據(jù)分布及其概率密度。這種圖表結(jié)合了箱形圖和密度圖的特征,主要用來顯示數(shù)據(jù)的分布形狀。中間的黑色粗條表示四分位數(shù)范圍,從其延伸的幼細(xì)黑線代表95%置信區(qū)間,而白點(diǎn)則為中位數(shù)。在統(tǒng)計分析中,小提琴圖是一種很常用的圖形,在plotlyexpress中也提供了這種圖的繪制,用的是violin()函數(shù)。685PlotlyExpressviolin()函數(shù)常用參數(shù):1.dataframe:需要分析的數(shù)據(jù)(數(shù)據(jù)框形式)2.x:選取某一列,小提琴也沿x軸顯示3.y:選取某一列,默認(rèn)小提琴也沿y軸顯示4.color:分配的顏色5.box:布爾值–如果為True,則在小提琴內(nèi)部繪制框。6.orientation

:–

'h'水平或'v'垂直之一695PlotlyExpressviolin()函數(shù)常用參數(shù):7.points

:outliers','suspectedoutliers','all',或False。如果為

'outliers',則僅顯示外部的采樣點(diǎn)。如果顯示'suspectedoutliers',則顯示所有離群點(diǎn),并用標(biāo)記突出顯示小于4*Q1-3*Q3或大于4*Q3-3*Q1的點(diǎn)'outliercolor'。如果為'outliers',則僅顯示外部的采樣點(diǎn)。如果為'all',則顯示所有采樣點(diǎn)。如果為False,則不會顯示任何采樣點(diǎn),并且晶須會延伸到整個采樣范圍。8.title:圖表的標(biāo)題9.violinmode

:'group'或'overlay'在'overlay'模式下,小提琴彼此位于頂部。在'group'模式下,小提琴彼此并排放置705PlotlyExpress小提琴圖715PlotlyExpress三維小提琴圖725PlotlyExpress重疊小提琴圖735PlotlyExpress三維小提琴圖745PlotlyExpress漏斗圖漏斗圖類似倒立的金字塔結(jié)構(gòu),常用來分析很多業(yè)務(wù)以及相關(guān)占比的內(nèi)容,漏斗圖適用于業(yè)務(wù)流程比較規(guī)范、周期長、環(huán)節(jié)多的流程分析,通過漏斗各環(huán)節(jié)業(yè)務(wù)數(shù)據(jù)的比較,能夠直觀地發(fā)現(xiàn)和說明問題所在。在plotlyexpress也提供了這種圖像的繪制。繪制漏斗圖的函數(shù)是funnel()函數(shù)。755PlotlyExpressfunnel()函數(shù)常用參數(shù):1.data:繪制漏斗圖所需的數(shù)據(jù)2.x:漏斗每層的數(shù)值3.y:漏斗每層的名稱4.opacity:透明度5.color_discrete_sequence:顏色序列選取6.title:標(biāo)題765PlotlyExpress雙坐標(biāo)軸示例1775PlotlyExpress雙坐標(biāo)軸示例1785PlotlyExpress雙坐標(biāo)軸示例1795PlotlyExpress雙坐標(biāo)軸示例1805PlotlyExpress雙坐標(biāo)軸示例18182數(shù)據(jù)可視化第一章Pyecharts的基本使用第二章Pyecharts的進(jìn)階使用第三章…第四章目錄Contents…第五章緒論83第二章Pyecharts的基本使用12345Pyecharts簡介準(zhǔn)備工作統(tǒng)計圖(直角坐標(biāo)系)基本圖表地理圖表6本章小結(jié)84Pyecharts簡介1.851Pyecharts簡介提及可視化立馬能夠想到MATLAB這款強(qiáng)大的軟件,MATLAB是一款用于數(shù)據(jù)分析、數(shù)值計、仿真等的編程商業(yè)數(shù)學(xué)軟件,它同時也是可視化領(lǐng)域的佼佼者。Echarts在可視化領(lǐng)域也有著舉足輕重的地位,Echarts(EnterpriseCharts)是一個商業(yè)級數(shù)據(jù)圖表,由百度開源的純Javascript圖表庫,可以流暢的運(yùn)行在PC和移動設(shè)備上,兼容絕大部分的瀏覽器(IE6/7/8/9/10/11,chrome,firefox,Safari等),底層依賴輕量級的Canvas庫ZRender,相較于其他的可視化工具來說,它在交互性上占據(jù)了絕對的優(yōu)勢。Echarts有開源、圖表類型豐富、高交互性、動態(tài)數(shù)據(jù)、巡禮特效等特性大大提升了用戶體驗。2018年全球著名開源社區(qū)Apache基金會宣布全票通過進(jìn)入Apache孵化器。861Pyecharts簡介Echarts對使用者十分友好,Python語言又風(fēng)靡一時,Echarts與Python的結(jié)合就產(chǎn)生了Pyecharts。Pyecharts分為v0.5.X和v1版本,兩者不兼容,需要注意的是,v0.5.X可以在python2.7以及3.4以上版本中使用,而v1及以上版本的pyecharts僅能在python3.6及以上版本中運(yùn)行。本書基于v1.7.1版本對Pyecharts展開介紹。在開始介紹pyecharts庫之前,我們需要準(zhǔn)備python環(huán)境以及第三方包的安裝。87準(zhǔn)備工作2.882準(zhǔn)備工作pyecharts是一個Python的第三方庫,完美結(jié)合了Echarts的可視化優(yōu)勢以及Python語言在數(shù)據(jù)分析上的優(yōu)勢。在使用pyecharts之前,一定要先安裝python,由于我們將會使用v1.7.1版本的pyechats,因此我們需要安裝python3.6的版本或者更高版本。本章將從安裝pyecharts第三方庫開始介紹,python的安裝過程將略過。892準(zhǔn)備工作——安裝步驟1.pip安裝首先用快捷鍵Win+R打開運(yùn)行程序,并在出現(xiàn)的輸入框中輸入“cmd”,點(diǎn)擊確定。圖1.1cmd展示圖902準(zhǔn)備工作——安裝步驟在出現(xiàn)的命令行窗口中輸入以下代碼并回車即可安裝:圖1.2安裝pyecharts示意圖如果使用pip安裝報錯,可以嘗試將pip替換為pip3或者conda。912準(zhǔn)備工作——安裝步驟2.conda工具安裝使用這種方法進(jìn)行擴(kuò)展庫安裝的前提下是您的電腦上安裝了Anaconda編譯器。首先打開anaconda,出現(xiàn)下面的界面:圖1.3Anaconda首頁示意圖922準(zhǔn)備工作——安裝步驟先點(diǎn)擊左邊的“Environment”,接著點(diǎn)擊右上方的下拉框,選擇“uninstall”或者“all”,在輸入框中輸入包名進(jìn)行搜索,找到想要的包并點(diǎn)擊安裝即可。使用anaconda的優(yōu)勢在于可以用圖形化界面進(jìn)行第三方庫的安裝以及多個python環(huán)境的創(chuàng)建與管理,當(dāng)然anaconda也支持命令行的管理。圖1.4Environment界面安裝庫示意圖932準(zhǔn)備工作——安裝步驟3.whl安裝當(dāng)上述兩種方法都報錯之后,再選擇該種安裝方法。首先需要在網(wǎng)址/project/pyecharts/#files中下載whl離線文件,接著打開cmd命令行,輸入如下命令即可完成安裝:942準(zhǔn)備工作——安裝步驟4.源碼安裝首先需要從GitHub社區(qū)克隆相應(yīng)的項目源碼:gitclone/pyecharts/pyecharts.git接著,進(jìn)入pyecharts文件夾,使用pip進(jìn)行安裝:$cdpyecharts$pipinstall-rrequirements.txt$pythonsetup.pyinstall本小節(jié)共介紹了4種方式進(jìn)行安裝pyecharts包,一般來說,在cmd中使用pip工具即可完成安裝,上述方法不需完全掌握,只需完成安裝即可。952準(zhǔn)備工作——繪制第一個圖表在進(jìn)行系統(tǒng)學(xué)習(xí)pyecharts之前,我們先繪制一個最簡單的圖表來體驗一下,這相當(dāng)于學(xué)習(xí)編程語言時的HelloWorld。在python中輸入以下代碼:962準(zhǔn)備工作——繪制第一個圖表上述代碼將返回一個路徑,即生成的圖表保存的路徑。找到生成的html文件并用瀏覽器打開之后,可以看到如下圖:圖1.5第一張圖的結(jié)果972準(zhǔn)備工作——繪制第一個圖表這就是第一個繪制好的圖,可以在該圖上嘗試移動鼠標(biāo)或點(diǎn)擊等操作,這時我們會發(fā)現(xiàn)移動鼠標(biāo)時將出現(xiàn)一個提示框,上面標(biāo)注了有關(guān)鼠標(biāo)所在區(qū)域的數(shù)據(jù)信息,并且圖的展示會結(jié)合一定的動畫,一個簡單的圖表就將pyecharts繪圖的優(yōu)勢體現(xiàn)的淋漓盡致?,F(xiàn)在我們來仔細(xì)分析一下代碼,第一行導(dǎo)入的Bar是用于繪制柱狀圖專用的類;第二行導(dǎo)入的是pyecharts庫中內(nèi)置的隨機(jī)數(shù)據(jù)集,后續(xù)很多示例中所使用的數(shù)據(jù)都會直接使用Faker模塊來快速生成;完成模塊的導(dǎo)入之后,首先實例化Bar這個類,使用Bar()就可以完成實例化操作;第四行傳入x軸的數(shù)據(jù);第五行傳入y軸的數(shù)據(jù);第六行則是將柱狀圖完成繪制并存儲在文件中,這樣可以永久保存剛剛繪制好的圖。982準(zhǔn)備工作——繪制第一個圖表注意:您繪制的圖在數(shù)據(jù)上可能會與上圖不完全一致,因為代碼中使用了Faker模塊生成數(shù)據(jù),這具有一定的隨機(jī)性??偨Y(jié)一下我們實現(xiàn)的第一個代碼,該代碼可以抽象為下述流程:圖1.6代碼流程圖后續(xù)繪制圖表的流程都是參照上述流程,有些圖可能會根據(jù)復(fù)雜程度在某些環(huán)節(jié)稍微繁瑣一些,但是萬變不離其宗,記住上述的流程,大部分的圖都能快速繪制出來。992準(zhǔn)備工作——鏈?zhǔn)秸{(diào)用上一小節(jié)中我們簡單的繪畫了一個柱狀圖,現(xiàn)在我們將上面的代碼在不改變實現(xiàn)效果的前提下對代碼進(jìn)行改造:1002準(zhǔn)備工作——鏈?zhǔn)秸{(diào)用仔細(xì)對比本節(jié)代碼和上節(jié)代碼,可以發(fā)現(xiàn)這次代碼中構(gòu)造了一個func_temp函數(shù),該函數(shù)的作用就是在構(gòu)造一個具體的柱狀圖,在這里構(gòu)造函數(shù)是為了在視覺上增加可讀性以及代碼的復(fù)用和移植。更為重要的是,在實例化Bar類之后并沒有立即將其賦值到一個變量中,而是直接用”.”繼續(xù)往其中傳入數(shù)據(jù)或更改組件樣式等等操作,雖然代碼中的”c=(…)”共占5行,其實完全可以看作一行,這樣的寫法與上小節(jié)中的代碼實現(xiàn)的效果完全一樣,但是在外觀上鏈?zhǔn)秸{(diào)用更為簡潔,增加了代碼的可讀性。在平時使用pyecharts時并不強(qiáng)求使用鏈?zhǔn)秸{(diào)用,但是我們需要知道的是應(yīng)該如何閱讀這種寫法的代碼,本書后面都會采用鏈?zhǔn)秸{(diào)用的寫法來進(jìn)行舉例。1012準(zhǔn)備工作——使用主題pyecharts中預(yù)先搭配了10余種主題供我們使用。對于主題的概念,我們可以理解為手機(jī)主題,作用就是讓我們繪制出的圖有更為美觀或與眾不同的配色,在視覺上給人以美感。示范代碼:1022準(zhǔn)備工作——使用主題圖1.7PURPLE_PASSION主題樣式結(jié)果如下:1032準(zhǔn)備工作——使用主題代碼解釋:主題風(fēng)格的設(shè)置是在實例化中的初始化參數(shù)中進(jìn)行設(shè)置的,本例中使用的是PURPLE_PASSION的主題。主題類型有:WHITE、LIGHT、DARK、CHALK、ESSOS、INFOGRAPHIC、MACARONS、PURPLE_PASSION、ROMA、ROMANTIC、SHINE、VINTAGE、WALDEN、WESTEROS、WONDERLAND等15種,其中WHITE主題是默認(rèn)主題。由于篇幅原因,這里不一一進(jìn)行展示,讀者可以自行更改主題樣式來查看效果。1042準(zhǔn)備工作——展示圖表根據(jù)我們現(xiàn)在所接觸過的代碼,可以知道有關(guān)保存的函數(shù)有render(),但除此之外還有很多其他的函數(shù)可供使用,這里將分為3個小塊來進(jìn)行介紹。1.render()該函數(shù)的使用方式不再贅述,它所包含的參數(shù)解釋如下:path:生成文件的存儲路徑,默認(rèn)值為“render.html”。template_name:使用的模板路徑,默認(rèn)值為“simple_chart.html”。env:配置各類環(huán)境參數(shù)。1052準(zhǔn)備工作——展示圖表2.render_notebook()該函數(shù)與render()的使用方式相同,但該函數(shù)中沒有參數(shù),需要注意的是,render_notebook()函數(shù)只能在jupyternotebook中使用,作用是將構(gòu)造的圖渲染到j(luò)upyternotebook中,同時可以支持實時交互操作,更方便的查看與調(diào)試代碼。在本書中后續(xù)的代碼都在jupyternotebook環(huán)境中進(jìn)行操作。若在您的實驗機(jī)上沒有jupyternotebook,可以將實例中的render_notebook()函數(shù)全部換為render()函數(shù),生成html文件并使用瀏覽器查看,最終實現(xiàn)的效果是一樣的。1062準(zhǔn)備工作——展示圖表3.make_snapshot該函數(shù)用于生成圖片,需要注意的是,這種保存方式將圖表渲染成圖片,因此無法進(jìn)行實時交互操作,但是報告或者論文中的圖都是以圖片形式進(jìn)行展示的,學(xué)習(xí)如何將圖表靜態(tài)渲染到圖片是有必要的。首先需要額外安裝第三方庫:第三方包前提條件說明snapshot-selenium先配置browserdriver,瀏覽器推薦使用chromepyecharts+selenium渲染圖片snapshot-phantomjs先安裝phantomjspyecharts+phantomjs渲染圖片snapshot-pyppeteer先安裝pyppeteer和chromiumpyecharts+pyppeteer渲染圖片,安裝完成后建議執(zhí)行chromium安裝命令:pyppeteer-install表格

1.1make_snapshot相關(guān)的第三方庫上述三個包只需安裝一個即可,筆者使用的電腦中預(yù)先有selenium環(huán)境,因此直接安裝的snapshot-selenium包(使用pip插件進(jìn)行安裝)。1072準(zhǔn)備工作——展示圖表下面對make_snapshot()函數(shù)的參數(shù)進(jìn)行介紹:defmake_snapshot()engine:渲染引擎,可選selenium或者phantomjs。file_name:傳入HTML文件路徑。output_name:輸出圖片路徑。delay:設(shè)置延遲時間,避免出現(xiàn)未渲染完就生成圖片從而造成圖片的不完整。pixel_ratio:像素比例,用于調(diào)節(jié)圖片質(zhì)量。is_remove_html:渲染完圖片是否刪除原HTML文件,值類型為bool類型,默認(rèn)值為False。browser:瀏覽器類型。1082準(zhǔn)備工作——展示圖表渲染為圖片的代碼如下:注意:上述代碼是從snapshot-selenium、snapshot-phantomjs、snapshot-pypeteer中任意選一個安裝成功的包中導(dǎo)入snapshot,再使用make_snapshot()函數(shù)進(jìn)行渲染圖片操作。109統(tǒng)計圖(直角坐標(biāo)系)3.1103統(tǒng)計圖(直角坐標(biāo)系)——共有函數(shù)介紹經(jīng)過上一節(jié)的介紹,我們知道pyecharts在繪制圖形時使用不同功能的函數(shù)一層一層往上添加數(shù)據(jù)或者組件。在有直角坐標(biāo)系的圖表中有一部分的函數(shù)是通用的,這里一起進(jìn)行介紹,后面在講具體的圖時不再進(jìn)行介紹。1.extend_axis()該函數(shù)用于擴(kuò)展x軸或者y軸,函數(shù)以及參數(shù)說明如下:defextend_axis()xaxis_data:擴(kuò)展X軸的數(shù)據(jù)項。xaxis:擴(kuò)展x軸配置,使用global_options.AxisOpts()函數(shù)進(jìn)行設(shè)置。yaxis:擴(kuò)展y軸配置,使用global_options.AxisOpts()函數(shù)進(jìn)行配置。1113統(tǒng)計圖(直角坐標(biāo)系)——共有函數(shù)介紹2.add_xaxis()該函數(shù)用于增加x軸數(shù)據(jù),函數(shù)以及參數(shù)說明如下:defadd_xaxis()xaxis_data:x軸數(shù)據(jù)序列,一般使用列表結(jié)構(gòu)。3.reversal_axis()該函數(shù)用于交換x軸與y軸的數(shù)據(jù),該函數(shù)沒有參數(shù):defreversal_axis()1123統(tǒng)計圖(直角坐標(biāo)系)——共有函數(shù)介紹4.

add_dataset()該函數(shù)用于添加dataset組件,函數(shù)與參數(shù)說明如下:defadd_dataset()source:原始數(shù)據(jù),一般是二維表。dimensions:定義series.data或dataset.source每個維度的信息。source_header:說明第一行/列是否是列/行名,值類型為bool類型。值為true時,即第一行/列是列/行名;值為false,即第一行為數(shù)據(jù)。1133統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖柱狀圖(BarChart)是一種以長方形的長度具象表現(xiàn)變量的大小的圖。柱狀圖常常用于較小的數(shù)據(jù)集分析,分析某一個變量在不同條件或時間下的值的變化。下面先介紹與柱狀圖Bar類相關(guān)的函數(shù):1.

add_yaxis()該函數(shù)的作用是增加柱狀圖的系列數(shù)據(jù),函數(shù)與參數(shù)說明如下:defadd_yaxis()series_name:設(shè)置系列名稱,系列名稱會在提示框以及圖例中顯示。y_axis:傳入系列數(shù)據(jù)。is_selected:是否選中圖例,值類型為bool類型,默認(rèn)是True,在圖剛完成時不會顯示設(shè)置為False的系列數(shù)據(jù),可以手動點(diǎn)擊圖例來調(diào)整數(shù)據(jù)的顯示。1143統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖xaxis_index:指定x軸的index,在單個圖表實例中存在多個x軸的時候有用。yaxis_index:指定y軸的index,在單個圖表實例中存在多個y軸的時候有用。color:設(shè)置系列l(wèi)abel的顏色。stack:數(shù)據(jù)堆疊,可以將相同類目軸的不同系列數(shù)據(jù)進(jìn)行堆疊顯示。category_gap:設(shè)置同一系列的柱間距離,默認(rèn)值為”20%”。gap:設(shè)置不同系列的柱間距離,值為字符串類型,值的大小為柱間空隙占比。label_opts:設(shè)置標(biāo)簽樣式,使用series_options.LabelOpts()進(jìn)行設(shè)置。markpoint_opts:設(shè)置標(biāo)記點(diǎn),使用series_options.MarkPointOpts()進(jìn)行設(shè)置。1153統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖markline_opts:設(shè)置標(biāo)記線,使用series_options.MarkLineOpts()進(jìn)行設(shè)置。tooltip_opts:設(shè)置提示框樣式,使用series_options.TooltipOpts()進(jìn)行設(shè)置。itemstyle_opts:設(shè)置圖元樣式,使用series_options.ItemStyleOpts()進(jìn)行設(shè)置。encode:定義data的哪個維度被編碼成什么。注意:gap和category_gap兩個參數(shù)一般都寫在最后一個增加數(shù)據(jù)的add_yaxis()中,若是在不同的add_yaxis()中都設(shè)置了這兩個參數(shù),默認(rèn)為最后一次的設(shè)置起作用。1163統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖2.BarItem柱狀圖數(shù)據(jù)項該類用于設(shè)置柱狀圖的數(shù)據(jù),但一般在繪制柱狀圖時會使用列表或數(shù)組等序列數(shù)據(jù)結(jié)構(gòu),該類中的參數(shù)解釋如下:classBarItem()name:設(shè)置數(shù)據(jù)項的名稱。value:設(shè)置單個數(shù)據(jù)項的數(shù)值。label_opts:設(shè)置單個柱條文本的樣式,使用series_options.LabelOpts()進(jìn)行設(shè)置。itemstyle_opts:設(shè)置圖元樣式,使用series_options.ItemStyleOpts進(jìn)行設(shè)置。tooltip_opts:設(shè)置提示框組件樣式,使用series_options.TooltipOpts進(jìn)行設(shè)置。1173統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖例1-11183統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖結(jié)果展示:圖1.8簡單柱狀圖效果展示1193統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖代碼解釋:首先用函數(shù)Bar()進(jìn)行實例化;接著對該實例化之后的對象用函數(shù)add_xaxis()添加x軸數(shù)據(jù);再利用函數(shù)add_yaxis()在該對象上添加y軸,從上述代碼中可以看見連續(xù)用了兩次add_yaxis()函數(shù),則表示增加了兩個系列的數(shù)據(jù),整個數(shù)據(jù)如表1.2所示;接著又用set_global_opts()函數(shù)對圖表的細(xì)節(jié)進(jìn)行設(shè)置,這里在參數(shù)title_opts處對圖表的標(biāo)題以及副標(biāo)題進(jìn)行了設(shè)置;最后返回整個鏈?zhǔn)酱a,一個畫柱形圖的函數(shù)就完成了。最后調(diào)用剛剛寫好的bar1()函數(shù),并使用render_notebook()函數(shù)將畫好的圖表嵌入jupyternotebook中進(jìn)行實時顯示,到此大功告成。1203統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖表格1.2數(shù)據(jù)展示表格x河馬蟒蛇老虎大象兔子熊貓獅子系列11211101351069455129系列2431021392252311181213統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖例1-21223統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖結(jié)果展示:圖1.9多系列柱狀圖的結(jié)果展示本例中插入了兩組數(shù)據(jù),但一開始呈現(xiàn)的數(shù)據(jù)卻只有一個系列,這是因為在第二個add_yaxis()函數(shù)中將is_selected參數(shù)的值設(shè)置為了False。若想要查看系列2所對應(yīng)的柱狀圖,可以直接點(diǎn)擊圖上方的圖例,灰色的即為不顯示。1233統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖例1-31243統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖結(jié)果展示:圖1.10調(diào)整柱狀圖間隙結(jié)果展示1253統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖例1-4軸標(biāo)簽的設(shè)置在set_global_opts()中,示例如下所示:1263統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖結(jié)果展示:圖1.11設(shè)置軸標(biāo)簽的結(jié)果展示1273統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖例1-5與柱狀圖十分相似的一個圖表類型則是條形圖,完全可以將其看成x軸與y軸翻轉(zhuǎn)的柱狀圖,因此,我們同樣可以利用Bar類來繪制條形圖,代碼如下:1283統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖結(jié)果如下:圖1.12條形圖的結(jié)果展示注意:此處除了需要用reversal_axis()函數(shù)將XY軸翻轉(zhuǎn)之外,還需要將數(shù)字標(biāo)簽的位置改在右邊,否則標(biāo)簽仍舊會顯示在上側(cè),標(biāo)簽與圖重合將會導(dǎo)致視圖不清。1293統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖例1-6堆疊柱狀圖是使用函數(shù)add_yaxis()中的stack參數(shù),每添加一個y軸的數(shù)據(jù)都可以設(shè)置一個stack參數(shù),該參數(shù)的值相當(dāng)于是該系列數(shù)據(jù)的名稱,最終形成的數(shù)據(jù)會將相同名稱的柱子堆疊在一起,示例如下所示:1303統(tǒng)計圖(直角坐標(biāo)系)——柱狀圖圖1.13堆疊柱狀圖的結(jié)果展示結(jié)果展示:1313統(tǒng)計圖(直角坐標(biāo)系)——箱線圖箱線圖(BoxPlot)又可稱為盒須圖,適用于顯示一組數(shù)據(jù)分布情況的統(tǒng)計圖。常用于品質(zhì)管理領(lǐng)域,能夠有效的反應(yīng)原始數(shù)據(jù)分布特征,還能對多組數(shù)據(jù)分布特征進(jìn)行比較。下面先介紹與箱線圖Boxplot類相關(guān)的函數(shù):1.add_yaxis()該函數(shù)的作用是傳入數(shù)據(jù),函數(shù)以及參數(shù)說明如下:defadd_yaxis()series_name:設(shè)置系列名稱,系列名稱會在提示框以及圖例中顯示。y_axis:傳入系列數(shù)據(jù)。is_selected:是否選中圖例,值類型為bool類型,默認(rèn)是True,在圖剛完成時不會顯示設(shè)置為False的系列數(shù)據(jù),可以手動點(diǎn)擊圖例來調(diào)整數(shù)據(jù)的顯示。1323統(tǒng)計圖(直角坐標(biāo)系)——箱線圖xaxis_index:指定x軸的index,在單個圖表實例中存在多個x軸的時候有用。yaxis_index:指定y軸的index,在單個圖表實例中存在多個y軸的時候有用。label_opts:設(shè)置標(biāo)簽樣式,使用series_options.LabelOpts()進(jìn)行設(shè)置。markpoint_opts:設(shè)置標(biāo)記點(diǎn),使用series_options.MarkPointOpts()進(jìn)行設(shè)置。markline_opts:設(shè)置標(biāo)記線,使用series_options.MarkLineOpts()進(jìn)行設(shè)置。tooltip_opts:設(shè)置提示框樣式,使用series_options.TooltipOpts()進(jìn)行設(shè)置。itemstyle_opts:設(shè)置圖元樣式,使用series_options.ItemStyleOpts()進(jìn)行設(shè)置。1333統(tǒng)計圖(直角坐標(biāo)系)——箱線圖接下來對車禍數(shù)據(jù)集(car_crashes.csv)進(jìn)行繪制箱線圖,車禍數(shù)據(jù)集中共有八個特征,首先讀取數(shù)據(jù)并查看數(shù)據(jù)集:圖1.14車禍數(shù)據(jù)展示結(jié)果如下:1343統(tǒng)計圖(直角坐標(biāo)系)——箱線圖例1-7接著對整個數(shù)據(jù)框的前5列數(shù)據(jù)繪制箱線圖,實例代碼如下:1353統(tǒng)計圖(直角坐標(biāo)系)——箱線圖圖1.15基本箱線圖的結(jié)果展示1363統(tǒng)計圖(直角坐標(biāo)系)——箱線圖代碼講解:在構(gòu)造繪制箱線圖函數(shù)時,首先利用Boxplot()進(jìn)行實例化;再添加x軸的值,即為數(shù)據(jù)框的列名,取列名的前5列;增加y軸數(shù)據(jù)時同樣利用的是add_yaxis()函數(shù),第一個參數(shù)、是系列名稱,即圖例處顯示的文字,需要注意的是第二個參數(shù)傳遞的并非是原始數(shù)據(jù),而是需要用prepare_data()函數(shù)對原始數(shù)據(jù)進(jìn)行一次處理,箱線圖中一個箱體所展示的數(shù)據(jù)特征包括上邊界、25%分位數(shù)、中位數(shù)、75%分位數(shù)、下邊界等5個特征值,可以將一組數(shù)據(jù)的整體分布情況較好的用一個箱體展示,因此繪制箱線圖所需要的不是一整組數(shù)據(jù),而是一組數(shù)據(jù)的上邊界、25%分位數(shù)、中位數(shù)、75%分位數(shù)、下邊界,而prepare_data()函數(shù)的作用就是將傳入的數(shù)據(jù)列表排序并計算出這5個數(shù)據(jù)統(tǒng)計量。1373統(tǒng)計圖(直角坐標(biāo)系)——箱線圖例1-8多系列箱線圖是將幾個數(shù)據(jù)集在相同的特征中對比數(shù)據(jù)的各種數(shù)字特征,這里為了方便,用的同一個數(shù)據(jù)的前半部分與后半部分進(jìn)行對比。在真實的項目環(huán)境中,會將數(shù)據(jù)集按某個分類特征為標(biāo)準(zhǔn),對比分析該分類特征的不同水平的數(shù)據(jù)分布。代碼如下:1383統(tǒng)計圖(直角坐標(biāo)系)——箱線圖圖1.16多系列箱線圖的結(jié)果展示1393統(tǒng)計圖(直角坐標(biāo)系)——箱線圖這里增加一個系列的方式同之前的方式一樣,都是使用add_yaxis()函數(shù),需要增加幾個系列,則使用幾次add_axis()函數(shù)。需要注意的是,箱線圖并不是將所有樣本都畫在圖上,而是畫出數(shù)據(jù)集的各個數(shù)字特征,因此需要將原有數(shù)據(jù)集進(jìn)行處理一次,處理原數(shù)據(jù)集的函數(shù)用的是prepare_data這個函數(shù)。1403統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖散點(diǎn)圖(ScatterPlot)在統(tǒng)計中常用于回歸分析中,在直角坐標(biāo)系中描下數(shù)據(jù)點(diǎn),可以根據(jù)散點(diǎn)圖觀察數(shù)據(jù)集的數(shù)據(jù)分布以及因變量與自變量之間的關(guān)系,從而能夠選擇更為恰當(dāng)?shù)姆绞竭M(jìn)一步分析。下面介紹有關(guān)散點(diǎn)圖Scatter類相關(guān)的函數(shù):1.add_yaxis()該函數(shù)的作用是傳入系列數(shù)據(jù),函數(shù)以及參數(shù)說明如下:series_name:設(shè)置系列名稱,系列名稱會在提示框以及圖例中顯示。y_axis:傳入系列數(shù)據(jù)。is_selected:是否選中圖例,值類型為bool類型,默認(rèn)是True,在圖剛完成時不會顯示設(shè)置為False的系列數(shù)據(jù),可以手動點(diǎn)擊圖例來調(diào)整數(shù)據(jù)的顯示。defadd_yaxis()1413統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖xaxis_index:指定x軸的index,在單個圖表實例中存在多個x軸的時候有用。yaxis_index:指定y軸的index,在單個圖表實例中存在多個y軸的時候有用。color:設(shè)置系列l(wèi)abel的顏色。symbol:設(shè)置標(biāo)記的形狀,可選值有”circle”、“rect”、”roundrect”、“triangle”、”diamond”、“pin”、“arrow”、“none”等。symbol_size:設(shè)置標(biāo)記的尺寸大小,值類型支持?jǐn)?shù)字和列表,當(dāng)值為數(shù)字時,則是直接設(shè)置標(biāo)記的大??;若值為列表時,列表中的兩個元素分別設(shè)置標(biāo)記的寬和高。symbol_rotate:設(shè)置標(biāo)記的旋轉(zhuǎn)角度。label_opts:設(shè)置標(biāo)簽樣式,使用series_options.LabelOpts()進(jìn)行設(shè)置。1423統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖markpoint_opts:設(shè)置標(biāo)記點(diǎn),使用series_options.MarkPointOpts()進(jìn)行設(shè)置。markline_opts:設(shè)置標(biāo)記線,使用series_options.MarkLineOpts()進(jìn)行設(shè)置。tooltip_opts:設(shè)置提示框樣式,使用series_options.TooltipOpts()進(jìn)行設(shè)置。itemstyle_opts:設(shè)置圖元樣式,使用series_options.ItemStyleOpts()進(jìn)行設(shè)置。encode:定義data的哪個維度被編碼成什么。1433統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖例1-9本例利用車禍數(shù)據(jù)集的“ins_losses”、”ins_prenium”兩列數(shù)據(jù)分別作為散點(diǎn)圖的x軸和y軸,這樣每個樣本都可以在一個確定的坐標(biāo)系中找到確定的位置。描點(diǎn)之后就可以宏觀的觀察樣本數(shù)據(jù)之間潛在的關(guān)系,也就是觀察數(shù)據(jù)集特征之間的關(guān)系。代碼如下:1443統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖圖1.17基本散點(diǎn)圖的結(jié)果展示1453統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖代碼解釋:這里的散點(diǎn)圖展示了一個二維數(shù)據(jù),x軸為一維,y軸為另一維,相當(dāng)于是在一個坐標(biāo)系中描繪了一組(x,y)數(shù)據(jù)點(diǎn),依據(jù)上述分析,我們很容易想到利用add_xaixs()添加x軸的一組數(shù)據(jù),用函數(shù)add_yaxis()添加y軸的一組數(shù)據(jù)。需要注意的是,pyecharts中y軸的值默認(rèn)顯為數(shù)據(jù)標(biāo)簽,想要畫出上面簡潔的圖則需要利用set_series_opts()函數(shù)將數(shù)據(jù)標(biāo)簽手動設(shè)置為不顯示,才能夠得到上述圖表。1463統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖例1-10在看到剛剛畫好的圖,大致能夠了解到數(shù)據(jù)集兩個特征的走勢以及之間的關(guān)系,但是若是想要了解某個點(diǎn)的值,這樣除了點(diǎn)和坐標(biāo)軸就空空如也的圖未免有些不便觀察,因此可以在其上添加一些網(wǎng)格來輔助觀察數(shù)據(jù)水平。代碼如下:1473統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖圖1.18散點(diǎn)圖增加分割線的結(jié)果展示1483統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖代碼解釋:相比于上一個圖來說,這個圖多了一些網(wǎng)格,這些網(wǎng)格主要的作用就是輔助觀察數(shù)據(jù)的值。實現(xiàn)這個效果需要用到set_global_opts函數(shù)中的xaxis_opts和yaxis_opts參數(shù),我們將這兩個參數(shù)的值重新設(shè)置,將splitline_opts的is_show參數(shù)設(shè)置為了True。這樣就可以看到網(wǎng)格線了。相應(yīng)的還可以實現(xiàn)設(shè)置網(wǎng)格線的間距、角度、位置、最大值、最小值等等屬性。1493統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖例1-11上面的圖中雖然增加了網(wǎng)格線輔助觀察,但是如何才能讓人對圖中的數(shù)據(jù)點(diǎn)對應(yīng)值的大小有更深的視覺感受?這里我們可以改變點(diǎn)的顏色,顏色能夠比數(shù)字給人更大更明顯的視覺沖擊。實現(xiàn)代碼如下:1503統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖圖1.19散點(diǎn)圖增加顏色的結(jié)果展示1513統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖代碼解釋:這段代碼中在set_global_opts函數(shù)中增加了visualmap_opts的參數(shù),該參數(shù)中能夠設(shè)置最大、最小值;相應(yīng)的,數(shù)據(jù)越小,點(diǎn)的顏色越偏向藍(lán)色,數(shù)據(jù)越大,點(diǎn)的顏色越偏向紅色,左側(cè)也會顯示一個顏色調(diào)來展示數(shù)據(jù)與顏色之間的關(guān)系。該參數(shù)除了能夠設(shè)置最大最小值之外,還能夠設(shè)置顯示的位置、方向、是否分段、背景顏色、長寬等等屬性。1523統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖例1-12除了不同的顏色可以快速的讓人感受到數(shù)據(jù)的大小之外,點(diǎn)的尺寸也同樣可以給人強(qiáng)烈的視覺沖擊,下面是通過點(diǎn)的大小來表現(xiàn)數(shù)據(jù)的大?。?533統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖圖1.20散點(diǎn)圖設(shè)置不同點(diǎn)尺寸的結(jié)果展示代碼詳解:改變點(diǎn)的尺寸大小需要用的參數(shù)是visualmap_opts,將type_參數(shù)的值改成”size”即可實現(xiàn),其他與之前的代碼并無區(qū)別。1543統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖例1-13從上面的例子中我們知道散點(diǎn)圖除了一般平面圖中有的x軸與y軸這兩個維度之外,點(diǎn)的尺寸與顏色也可以改變,那么點(diǎn)的顏色或者尺寸是否可以展示第三維的數(shù)據(jù)呢?答案是肯定的,因此散點(diǎn)圖就可以在一個平面圖中傳遞更多信息。代碼如下:1553統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖圖1.21顯示三維數(shù)據(jù)散點(diǎn)圖的結(jié)果展示代碼詳解:從代碼中我們可以看到,在add_yaxis()函數(shù)中傳遞參數(shù)時,傳入的數(shù)據(jù)有兩個維度,而visualmap_opts參數(shù)中在配置組件時設(shè)置了另一個參數(shù)dimension,這樣就能使顏色展示第三個維度,畫出來的圖也有三個維度。1563統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖例1-14除了上述的配置之外,我們還可以為我們的圖增加一些炫酷的特效,例如每個點(diǎn)都增加漣漪動圖效果,這樣是不是能夠使我們的圖更加吸引人?漣漪特效散點(diǎn)圖中的add_yaxis()函數(shù)相較于散點(diǎn)圖中的add_yaxis()函數(shù)多了一個effect_opts參數(shù),該參數(shù)使用series_options.EffectOpts()進(jìn)行設(shè)置漣漪特效樣式。1573統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖實現(xiàn)代碼如下:1583統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖圖1.22漣漪特效散點(diǎn)圖的結(jié)果展示代碼詳解:漣漪散點(diǎn)圖所用到的類不再是Scatter,而是EffectScatter,同樣是先實例化,然后傳入數(shù)據(jù)。1593統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖例1-15漣漪特效圖的點(diǎn)可以改變形狀,這不僅僅可以使我們的圖更加吸引人眼球,更重要的是,不同的點(diǎn)的形狀同樣可以表示一個維度,例如數(shù)據(jù)集中的一個分類特征,或者表示不同的數(shù)據(jù)集。代碼如下:1603統(tǒng)計圖(直角坐標(biāo)系)——散點(diǎn)圖圖1.23漣漪特效散點(diǎn)圖不同點(diǎn)類型的結(jié)果展示代碼詳解:改變點(diǎn)的形狀的參數(shù)是在add_yaxis函數(shù)中的symbol參數(shù),除了本例中的DIAMOND之外還有RECT、ROUND_RECT、TRIANGLE、ARROW等值可以實現(xiàn)。1613統(tǒng)計圖(直角坐標(biāo)系)——熱力圖熱力圖(HeatMap)在可視化項目比較常見,主要是利用不同的顏色來體現(xiàn)熱點(diǎn)分布。常見于統(tǒng)計中展示數(shù)據(jù)集中不同特征之間的相關(guān)程度;除此之外也常常用于表示地圖上不同區(qū)域的某個指標(biāo)的高低或者聚集程度。這里先介紹與熱力圖HeatMap相關(guān)的函數(shù):1.add_yaxis()該函數(shù)的作用是傳入數(shù)據(jù),函數(shù)以及參數(shù)說明如下:defadd_yaxis()series_name:設(shè)置系列名稱,系列名稱會在提示框以及圖例中顯示。y_axis:傳入系列數(shù)據(jù)。value:設(shè)置系列數(shù)據(jù)項。is_selected:是否選中圖例,值類型為bool類型,默認(rèn)是True,在圖剛完成時不會顯示設(shè)置為False的系列數(shù)據(jù),可以手動點(diǎn)擊圖例來調(diào)整數(shù)據(jù)的顯示。1623統(tǒng)計圖(直角坐標(biāo)系)——熱力圖xaxis_index:指定x軸的index,在單個圖表實例中存在多個x軸的時候有用。yaxis_index:指定y軸的index,在單個圖表實例中存在多個y軸的時候有用。label_opts:設(shè)置標(biāo)簽樣式,使用series_options.LabelOpts()進(jìn)行設(shè)置。markpoint_opts:設(shè)置標(biāo)記點(diǎn),使用series_options.MarkPointOpts()進(jìn)行設(shè)置。markline_opts:設(shè)置標(biāo)記線,使用series_options.MarkLineOpts()進(jìn)行設(shè)置。tooltip_opts:設(shè)置提示框樣式,使用series_options.TooltipOpts()進(jìn)行設(shè)置。itemstyle_opts:設(shè)置圖元樣式,使用series_options.ItemStyleOpts()進(jìn)行設(shè)置。1633統(tǒng)計圖(直角坐標(biāo)系)——熱力圖例1-16本例中對車禍數(shù)據(jù)集中的各個特征進(jìn)行相關(guān)性分析,并將結(jié)果以熱力圖的形式進(jìn)行展示,實現(xiàn)熱力圖的代碼如下所示:1643統(tǒng)計圖(直角坐標(biāo)系)——熱力圖1653統(tǒng)計圖(直角坐標(biāo)系)——熱力圖圖1.24熱力圖的結(jié)果展示1663統(tǒng)計圖(直角坐標(biāo)系)——熱力圖代碼詳解:首先對數(shù)據(jù)集data計算相關(guān)系數(shù),corr()函數(shù)返回的數(shù)據(jù)類型為DataFrame,這里將其轉(zhuǎn)化為列表;接著實例化HeatMap()之后,用add_yaxis函數(shù)傳入己經(jīng)計算好的相關(guān)系數(shù),注意這里需要手動傳入x軸與y軸的標(biāo)簽。除此之外,還需要將visualmap_opts中的最大值與最小值分別設(shè)置為1、-1,這是因為max_默認(rèn)的值為100,min_默認(rèn)的值為0,這個取值范圍并不符合相關(guān)系數(shù)的取值范圍,因此繪制的圖不會出現(xiàn)我們想要的結(jié)果。這里為了標(biāo)簽?zāi)軌蛲耆@示,對其設(shè)置了標(biāo)簽的旋轉(zhuǎn)角度。如果想要顯示各個方格中的值,在add_yaxis()函數(shù)中設(shè)置label_opts參數(shù)的值,寫為label_opts=opts.LabelOpts(is_show=True)即可,同時還可以利用position設(shè)置標(biāo)簽所在的位置,這里不一一展示,讀者可以自行實驗。1673統(tǒng)計圖(直角坐標(biāo)系)——K線圖K線圖(KLine)又稱為蠟燭線、陰陽線等等,最先是日本商人用于記錄米市行情,后在股市中被廣泛應(yīng)用。由此可見,K線圖適用于描繪某個商品每天的價格波動。K線圖的優(yōu)點(diǎn)是能夠全面透徹的觀察市場行情的波動變化。缺點(diǎn)便是繪制繁復(fù),是許多走勢圖中較為難畫的一種,并且對于不懂K線圖的人來說,理解起來也會有一定的難度,沒有其他圖那么直觀簡潔易懂。1683統(tǒng)計圖(直角坐標(biāo)系)——K線圖圖1.25K線圖柱體標(biāo)注在最常用的股票場景中,K線圖每條線中都包含開盤價、收盤價、最高價和最低價組成;圖中的線分為陰線與陽線,當(dāng)收盤價高于開盤價時,實體部分會繪制為紅線或者白線,也成為“陽線“;反之,當(dāng)收盤價低于開盤價,則成為”陰線“,實體部分則是綠色或者黑色。如下圖所示:1693統(tǒng)計圖(直角坐標(biāo)系)——K線圖下面是對K線圖Kline類相關(guān)的函數(shù)介紹:1.add_yaxis()該函數(shù)的作用是傳入數(shù)據(jù),函數(shù)以及參數(shù)說明如下:defadd_yaxis()series_name:設(shè)置系列名稱,系列名稱會在提示框以及圖例中顯示。y_axis:傳入系列數(shù)據(jù)。is_selected:是否選中圖例,值類型為bool類型,默認(rèn)是True,在圖剛完成時不會顯示設(shè)置為False的系列數(shù)據(jù),可以手動點(diǎn)擊圖例來調(diào)整數(shù)據(jù)的顯示。xaxis_index:指定x軸的index,在單個圖表實例中存在多個x軸的時候有用。1703統(tǒng)計圖(直角坐標(biāo)系)——K線圖yaxis_index:指定y軸的index,在單個圖表實例中存在多個y軸的時候有用。markpoint_opts:設(shè)置標(biāo)記點(diǎn),使用series_options.MarkPointOpts()進(jìn)行設(shè)置。markline_opts:設(shè)置標(biāo)記線,使用series_options.MarkLineOpts()進(jìn)行設(shè)置。tooltip_opts:設(shè)置提示框樣式,使用series_options.TooltipOpts()進(jìn)行設(shè)置。itemstyle_opts:設(shè)置圖元樣式,使用series_options.ItemStyleOpts()進(jìn)行設(shè)置。1713統(tǒng)計圖(直角坐標(biāo)系)——K線圖在本例中所用的數(shù)據(jù)集是隨機(jī)生成的,其中包括日期、開盤價、收盤價、最低價、最高價、成交量等特征,只用于示范K線圖的畫法。數(shù)據(jù)集如下:圖1.26股票數(shù)據(jù)展示1723統(tǒng)計圖(直角坐標(biāo)系)——K線圖例1-171733統(tǒng)計圖(直角坐標(biāo)系)——K線圖圖1.27K線圖的結(jié)果展示1743統(tǒng)計圖(直角坐標(biāo)系)——K線圖代碼詳解:這里的橫軸傳入的數(shù)據(jù)是日期,由于數(shù)據(jù)集中的日期除了年月日之外還有時分秒,因此我們構(gòu)造了一個臨時函數(shù),用于獲取日期中的年月日;add_yaxis中傳入的數(shù)據(jù)則是開盤價、收盤價、最低價、最高價等,這里傳入時需注意要將數(shù)據(jù)轉(zhuǎn)化為列表。1753統(tǒng)計圖(直角坐標(biāo)系)——折線圖折線圖(Line)也稱為趨勢圖。常常用于顯示某個指標(biāo)在不同時間點(diǎn)的數(shù)值,簡而言之,折線圖是用于描述某一指標(biāo)隨時間的變化,反映事物的動態(tài)變化過程。折線圖不僅可以體現(xiàn)數(shù)據(jù)的增減關(guān)系,圖形的斜率也能在一定程度上體現(xiàn)增長率。下面先介紹與折線圖Line類相關(guān)的函數(shù):1.add_yaxis()該函數(shù)的作用是傳入數(shù)據(jù),函數(shù)以及參數(shù)說明如下:defadd_yaxis()series_name:設(shè)置系列名稱,系列名稱會在提示框以及圖例中顯示。y_axis:傳入系列數(shù)據(jù)。1763統(tǒng)計圖(直角坐標(biāo)系)——折線圖is_selected:是否選中圖例,值類型為bool類型,默認(rèn)是True,在圖剛完成時不會顯示設(shè)置為False的系列數(shù)據(jù),可以手動點(diǎn)擊圖例來調(diào)整數(shù)據(jù)的顯示。is_connect_nones:是否連接空數(shù)據(jù),值類型為bool類型,默認(rèn)值為False,空數(shù)據(jù)使用”None”表示。xaxis_index:指定x軸的index,在單個圖表實例中存在多個x軸的時候有用。yaxis_index:指定y軸的index,在單個圖表實例中存在多個y軸的時候有用。color:設(shè)置系列l(wèi)abel的顏色。is_symbol_show:是否顯示symbol。symbol:設(shè)置標(biāo)記的形狀,可選值有”circle”、“rect”、”roundRect”、“triangle”、”diamond”、“pin”、“arrow”、“none”等。1773統(tǒng)計圖(直角坐標(biāo)系)——折線圖symbol_size:設(shè)置標(biāo)記的尺寸大小,值類型支持?jǐn)?shù)字和列表,當(dāng)值為數(shù)字時,則是直接設(shè)置標(biāo)記的大?。蝗糁禐榱斜頃r,列表中的兩個元素分別設(shè)置標(biāo)記的寬和高。stack:數(shù)據(jù)堆疊,可以將相同類目軸的不同系列數(shù)據(jù)進(jìn)行堆疊顯示。is_smooth:設(shè)置是否平滑曲線,值類型為bool類型,默認(rèn)值為False。is_step:設(shè)置是否顯示成階梯圖,值類型為bool類型,默認(rèn)值為False。is_hover_animation:設(shè)置是否開啟hover在拐點(diǎn)標(biāo)志上的提示動畫效果,值類型為bool類型,默認(rèn)值為False。z_level:設(shè)置折線圖中所有圖形的zlevel值。zlevel值用于Canvas分層,不同zlevel值的圖形會放置在不同的Canvas中,Canvas分層是一種常見的優(yōu)化手段。注意zlevel大的Canvas會放在zlevel小的Canvas的上面。1783統(tǒng)計圖(直角坐標(biāo)系)——折線圖z:設(shè)置折線圖組件的所有圖形的z值。z值用于控制圖形的前后順序,注意z值大的圖形會覆蓋z值小的圖形。注意z相比zlevel優(yōu)先級更低,而且不會創(chuàng)建新的Canvas。label_opts:設(shè)置標(biāo)簽樣式,使用series_options.LabelOpts()進(jìn)行設(shè)置。markpoint_opts:設(shè)置標(biāo)記點(diǎn),使用series_options.MarkPointOpts()進(jìn)行設(shè)置。markline_opts:設(shè)置標(biāo)記線,使用series_options.MarkLineOpts()進(jìn)行設(shè)置。markarea_opts:設(shè)置標(biāo)記線,使用series_options.MarkLineOpts()進(jìn)行設(shè)置。tooltip_opts:設(shè)置提示框樣式,使用series_options.TooltipOpts()進(jìn)行設(shè)置。1793統(tǒng)計圖(直角坐標(biāo)系)——折線圖linestyle_opts:設(shè)置線樣式,使用series_options.LineStyleOpts()進(jìn)行設(shè)置areastyle_opts:設(shè)置填充區(qū)域樣式,使用series_options.AreaStyleOpts()進(jìn)行設(shè)置itemstyle_opts:設(shè)置圖元樣式,使用series_options.ItemStyleOpts()進(jìn)行設(shè)置。1803統(tǒng)計圖(直角坐標(biāo)系)——折線圖例1-18這里我們?nèi)耘f使用剛剛的股票數(shù)據(jù),實現(xiàn)代碼如下:1813統(tǒng)計圖(直角坐標(biāo)系)——折線圖圖1.28折線圖的結(jié)果展示1823統(tǒng)計圖(直角坐標(biāo)系)——折線圖代碼詳解:在實例化Line類之后,通過add_yaxis函數(shù)傳入數(shù)據(jù)。在繪畫折線圖時,經(jīng)常會出現(xiàn)因為數(shù)值過大,而導(dǎo)致數(shù)據(jù)之間的差異不明顯,對于這種情況,我們在set_global_opts函數(shù)中設(shè)置yaxis_opts參數(shù),將y軸的最小值0改成數(shù)據(jù)集中的最小值,這樣y軸的起始點(diǎn)就會改變,增大數(shù)據(jù)之間的差異性。1833統(tǒng)計圖(直角坐標(biāo)系)——折線圖例1-19根據(jù)我們的經(jīng)驗,數(shù)據(jù)的變化一般都是平滑的,而非直接的轉(zhuǎn)折,為了更好的演示數(shù)據(jù)的變化,pyecharts中提供了平滑的折線圖,代碼如下:1843統(tǒng)計圖(直角坐標(biāo)系)——折線圖圖1.29平滑折線圖的結(jié)果展示代碼詳解:相較于普通的折線圖,平滑折線圖只需更改add_yaxis函數(shù)中的is_smooth參數(shù),該參數(shù)的值為布爾值,默認(rèn)為False,當(dāng)設(shè)置為True時,就是平滑折線圖。1853統(tǒng)計圖(直角坐標(biāo)系)——疊加多圖我們知道,不同類型的圖的優(yōu)勢不同,有時需要結(jié)合多種類型的圖表來展示一個數(shù)據(jù)集,在pyecharts中用overlap()函數(shù)對多個圖表進(jìn)行疊加,代碼如下所示:1863統(tǒng)計圖(直角坐標(biāo)系)——疊加多圖圖1.30疊加多圖的結(jié)果展示代碼詳解:在結(jié)合多個不同類型的圖表時需要用到overlap函數(shù),首先我們定義了一個柱形圖,接著定義了一個折線圖,最后利用overlap將其結(jié)合在一起即可。187基本圖表4.1884基本圖表上一小節(jié)中,介紹了如何繪制多種統(tǒng)計圖,但是在做分析寫報告時,我們需要更多具有特色的圖,才能最大化展示數(shù)據(jù)的特點(diǎn)。本小節(jié)將會為大家講解更多的圖表類型。1894基本圖表——日歷熱力圖日歷熱力圖(CalendarHeatmap)是熱力圖與日歷圖結(jié)合的產(chǎn)物。日歷熱力圖一般用于展示兩個變量:時間變量與另一種變量;具體的形式是由7×n個小方框組成的類似于表格的圖,每個小方格代表一天,而方塊中的顏色則是表示另一變量值的大小。GitHub官網(wǎng)中有一個日歷熱力圖來顯示賬戶的使用程度,其中綠色越深使用次

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論