




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 大數(shù)據(jù)導(dǎo)論第十六章CONTENTS目錄PART 01 PYTHON數(shù)據(jù)可視化工具PART 02 MATPLOTLIB可視化庫(kù)PART 03 PANDAS可視化PART 04 SEABORN可視化模塊PART 05 BOKEH可視化模塊PART 06 PYGAL可視化模塊PART 07 GEOPLOTLIB可視化模塊PART 08 作業(yè)PART 01 PYTHON數(shù)據(jù)可視化工具在Python中,將數(shù)據(jù)可視化有多種選擇,無(wú)論要畫什么圖,從最基本的圖表到交互式的Web頁(yè)面,都能找到相對(duì)的庫(kù)。PYTHON數(shù)據(jù)可視化工具Python數(shù)據(jù)可視化工具matplotlibPandasSeabornBokeh
2、PygalgeoplotlibPART 02 matplotlib可視化庫(kù)matplotlib是一個(gè)用于創(chuàng)建出版質(zhì)量圖表的桌面繪圖包,它完整支持二維繪圖以及部分支持三維繪圖函數(shù)式繪圖matplotlib有一套函數(shù)形式的繪圖接口:matplotlib.pyplot模塊。利用函數(shù)的調(diào)用,matplotlib可以輕松的利用一行命令來(lái)繪制直線,然后再用一系列的函數(shù)調(diào)整結(jié)果。下面的代碼調(diào)用matplotlib.pyplot模塊繪制一條直線# 畫一條直線: 調(diào)用pyplot 函數(shù)from matplotlib.pyplot import *plot(0, 1, 0, 1) # 畫一條從點(diǎn) (0, 0) 到
3、點(diǎn)(1, 1)的直線title(a strait line)# 添加標(biāo)題xlabel(x value)# 添加x軸標(biāo)題ylabel(y value)# 添加y軸標(biāo)題savefig(demo.jpg)# 存儲(chǔ)為jpg文件matplotlib可視化庫(kù)import matplotlib.pyplot as pltx = 1,2,3,4,5y = 2.3,3.4,1.2,6.6,7.0plt.figure(figsize=(8,6)plt.subplot(2,2,1)plt.plot(x,y)plt.title(plot)plt.subplot(2,2,2)plt.scatter(x, y)plt.t
4、itle(scatter)plt.subplot(2,2,3)plt.bar(x, y)plt.title(bar)plt.subplot(2,2,4)plt.pie(y)plt.title(pie)show()在matplotlib.pyplot中,還包含其他種類的繪圖函數(shù),包括:折線、散點(diǎn)圖、餅圖、柱狀圖、等高線等。下面的代碼使用一組數(shù)據(jù),通過(guò)調(diào)用matplotlib.pyplot函數(shù)生成這些幾何圖形。matplotlib可視化庫(kù)面向?qū)ο笫嚼L圖事實(shí)上,對(duì)象是描述圖像的最自然的方式,面向?qū)ο缶幊套畛晒Φ念I(lǐng)域就是在計(jì)算機(jī)圖形方面。在matplotlib中,整個(gè)圖像為一個(gè)Figure對(duì)象。在Fi
5、gure對(duì)象中可以包含一個(gè),或者多個(gè)Axes對(duì)象。每個(gè)Axes對(duì)象都是一個(gè)擁有自己坐標(biāo)系統(tǒng)的繪圖區(qū)域。面向?qū)ο笫嚼L圖每個(gè)Axes對(duì)象的繪圖中只有一個(gè)坐標(biāo)系區(qū)域,也就是ax,包含以下對(duì)象:ax:實(shí)際繪圖的區(qū)域;title:圖表的標(biāo)題;data:要可視化的數(shù)據(jù);xaxis和yaxis:x軸和y軸代表水平和垂直的軸線;tick:x軸和y軸的刻度,刻度標(biāo)識(shí)坐標(biāo)軸的分隔,包括最小刻度和最大刻度;lable:x軸和y軸的刻度標(biāo)簽:表示特定坐標(biāo)軸的值。面向?qū)ο笫嚼L圖面向?qū)ο笫嚼L圖from matplotlib.figure import Figurefrom matplotlib.backends.back
6、end_agg import FigureCanvasAgg as FigureCanvascanvas = FigureCanvas(fig)ax = fig.add_axes(0.1, 0.1, 0.8, 0.8)line = ax.plot(0,1, 0,1)ax.set_title(a straight line (OO)ax.set_xlabel(x value)ax.set_ylabel(y value)canvas.print_figure(demo.jpg)圖像坐標(biāo)將一張圖的左下角視為原點(diǎn),將圖像的x方向和y方向總長(zhǎng)度都看做1。x方向的0.2就是指20%的圖像在x方向的總長(zhǎng),y
7、方向0.8的長(zhǎng)度指80%的y方向總長(zhǎng)。(0.5, 0.5)是圖像的中點(diǎn),(1, 1)指圖像的右上角。設(shè)置屬性設(shè)置顏色、線型、和標(biāo)記matplotlib允許用戶改變線的各種屬性,如線條風(fēng)格、顏色或者寬度。根據(jù)要表達(dá)的信息合理地設(shè)置線型并明顯地區(qū)分目標(biāo)受眾,能讓圖給觀眾流下更深刻的印象。matplotlib的plot函數(shù)接受一組X和Y坐標(biāo),可以接受一個(gè)表示顏色和線型的字符串縮寫。例如,要根據(jù)x和y繪制綠色虛線,可以編寫如下代碼:plt.plot(x, y, g-) plt.plot(x, y, linestyle=-, color=g) 設(shè)置屬性from matplotlib.figure imp
8、ort Figurefrom matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvasdata = randn(30).cumsum() fig = Figure()canvas = FigureCanvas(fig)plt = fig.add_axes(0.1, 0.1, 0.8, 0.8)plt.plot(data, color=k, linestyle=dashed, linewidth=1.5, marker=o)#通過(guò)參數(shù)還可以設(shè)置線的寬度canvas.print_figure(demo2.jpg)通
9、過(guò)設(shè)置線的屬性,下述代碼生成的圖形就更加清晰明了設(shè)置屬性設(shè)置刻度和標(biāo)簽刻度是圖形的一部分,由刻度定位器指定刻度所在的位置,刻度格式器指定刻度顯示的樣式。修改X軸的刻度,最簡(jiǎn)單的辦法是使用set_xticks和set_xticklabels。set_xticks:告訴matplotlib要將刻度放在數(shù)據(jù)范圍中的哪些位置,缺省情況下位置的值就是刻度標(biāo)記的值。set_xticklabels:設(shè)置刻度標(biāo)簽的值、字體、角度等plt.set_xticks(0, 250, 500, 750, 1000) plt.set_xticklabels(one, two, three, four, five, rot
10、ation=30, fontsize=small)設(shè)置屬性設(shè)置屬性設(shè)置圖例和注解圖例和注解清晰連貫地解釋了數(shù)據(jù)圖表的內(nèi)容,通過(guò)給每個(gè)圖表元素添加一個(gè)關(guān)于所顯示數(shù)據(jù)的簡(jiǎn)短描述,能讓用戶更容易理解。設(shè)置圖例和注解的方法是為每個(gè)subplot指導(dǎo)一個(gè)字符串標(biāo)簽,然后可以調(diào)用plt.legend()來(lái)自動(dòng)創(chuàng)建圖例。設(shè)置屬性from matplotlib.figure import Figurefrom matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvasfrom matplotlib.pyplot import m
11、atplotlib.pyplot as plt fig = Figure()canvas = FigureCanvas(fig)ax = fig.add_axes(0.1, 0.1, 0.8, 0.8)ax.plot(randn(1000).cumsum(), k, label=one)ax.plot(randn(1000).cumsum(), k-, label=two) ax.plot(randn(1000).cumsum(), k., label=three)ax.legend(loc=best) Show()設(shè)置屬性在上述代碼中,為每個(gè)圖表元素指定了一個(gè)字符串標(biāo)檢,說(shuō)明了顏色、線形狀、
12、標(biāo)簽值,這樣legend()會(huì)把它們添加到圖例框中。可以通過(guò)loc參數(shù)確定圖例框的位置。這個(gè)參數(shù)是可選的,一般情況下,“best”是不錯(cuò)的選擇,因?yàn)樗鼤?huì)選擇最不礙事的位置放置圖例框定制繪圖from matplotlib.figure import Figurefrom matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvasfig = Figure()canvas = FigureCanvas(fig)ax = fig.add_axes(0.1, 0.1, 0.8, 0.8)from matplotlib.pa
13、th import Pathimport matplotlib.patches as patchesverts = (0., 0.), (0., 1.),(0.5, 1.5),(1., 1.),(1., 0.),(0., 0.),codes = Path.MOVETO, Path.LINETO, Path.LINETO, Path.LINETO, Path.LINETO, Path.CLOSEPOLY, path = Path(verts, codes)patch = patches.PathPatch(path, facecolor=coral)ax.add_patch(patch)ax.s
14、et_xlim(-0.5,2)ax.set_ylim(-0.5,2)canvas.print_figure(demo.jpg)matplotlib實(shí)際上提供了更大的自由度,允許用戶以更基礎(chǔ)的方式來(lái)繪制圖形,下面的代碼可以繪制一個(gè)五邊形圖。matplotlib可視化庫(kù)上面的代碼首先確定頂點(diǎn),然后構(gòu)建了一個(gè)path對(duì)象,這個(gè)對(duì)象實(shí)際上就是5個(gè)頂點(diǎn)的連線。在codes中,先使用MOVETO將畫筆移動(dòng)到起點(diǎn),然后依次用直線連接(LINETO)在path建立了封閉的5邊形后,再在path的基礎(chǔ)上構(gòu)建了patch對(duì)象,是一個(gè)圖形塊。patch的背景顏色選為coral。最后,將這個(gè)patch對(duì)象添加到預(yù)先準(zhǔn)
15、備好的ax上,就完成了整個(gè)繪圖。PART 03 Pandas可視化Pandas是基于Numpy構(gòu)建的含有更高級(jí)數(shù)據(jù)結(jié)構(gòu)和工具的數(shù)據(jù)分析包。使用Pandas的Series方法繪制圖形import pandas as pdfrom pandas import Series,DataFrameimport numpy as pyimport matplotlib.pyplot as pltfrom numpy.random import randns_data = Series(randn(100)s_data.plot()plt.show()Series 可以看做一個(gè)定長(zhǎng)的有序字典?;救我獾囊痪S
16、數(shù)據(jù)都可以用來(lái)構(gòu)造 Series 對(duì)象。Series 對(duì)象包含兩個(gè)主要的屬性:index 和 values。使用Pandas的DataFrame方法繪制圖形DataFrame 是一個(gè)表格型的數(shù)據(jù)結(jié)構(gòu),它含有一組有序的列(類似于 index),每列可以是不同的值類型。基本上可以把DataFrame看成是共享同一個(gè)index的Series的集合。from pandas import Series,DataFrame from numpy.random import randnimport numpy as npimport matplotlib.pyplot as pltdf = DataFram
17、e(randn(10,5),columns=A,B,C,D,E,index = np.arange(0,100,10)df.plot()plt.show()使用DataFrame的plot方法繪制圖像會(huì)按照數(shù)據(jù)的每一列繪制一條曲線,參數(shù)中的columns就是列的名稱而index本來(lái)DataFrame的行名稱。from pandas import Series,DataFrame from numpy.random import randnimport numpy as npimport matplotlib.pyplot as pltdf = DataFrame(randn(10,5),col
18、umns=A,B,C,D,E,index = np.arange(0,100,10)df.plot(kind=bar)plt.show()Seaborn是針對(duì)統(tǒng)計(jì)繪圖的可視化模塊,是在matplotlib的基礎(chǔ)上進(jìn)行了更高級(jí)的API封裝,在默認(rèn)情況下就能創(chuàng)建賞心悅目的圖表,便于用戶能夠能夠做出各種有吸引力的統(tǒng)計(jì)圖表。PART 04 Seaborn可視化模塊Seaborn簡(jiǎn)介Seaborn可視化模塊具有如下特點(diǎn):創(chuàng)建具有統(tǒng)計(jì)意義的圖;默認(rèn)情況下就能創(chuàng)建賞心悅目的圖表;能理解pandas的DataFrame類型,所以它們一起可以很好地工作;增加調(diào)色板功能,利用色彩豐富的圖像揭示數(shù)據(jù)中的模式;運(yùn)用數(shù)
19、據(jù)子集繪制與比較單變量和雙變量分布的功能;運(yùn)用聚類算法探究矩陣間的結(jié)構(gòu),可視化矩陣數(shù)據(jù);可視化時(shí)間序列數(shù)據(jù)及不確定性的展示;利用網(wǎng)格建立復(fù)雜圖像集,可在分割區(qū)域制圖,用于復(fù)雜可視化?;靖拍?. 分組繪圖分組繪圖是指在一張圖上可視化多個(gè)變量值。2.分面繪圖分面繪圖是指在一張紙上劃分不同的區(qū)域,在不同的子區(qū)域上繪制不同的圖形。3.統(tǒng)計(jì)繪圖分組繪圖的時(shí)候,需要先對(duì)分組變量使用統(tǒng)計(jì)函數(shù),然后繪圖。如果不使用統(tǒng)計(jì)繪圖,就需要先用Pandas進(jìn)行統(tǒng)計(jì),然后再用Seaborn繪圖,就會(huì)變得復(fù)雜數(shù)據(jù)集介紹Tips數(shù)據(jù)集tips是一個(gè)客戶用餐后付小費(fèi)情況的數(shù)據(jù)集。每條數(shù)據(jù)包括7個(gè)數(shù)據(jù)項(xiàng):餐費(fèi)、小費(fèi)、客戶性別、
20、是否抽煙、用餐日(周幾)、用餐時(shí)間(中餐、晚餐)、人數(shù)。數(shù)據(jù)集共有144條記錄total_billtipsexsmokerdaytimesize16.991.01FemaleNoSunDinner210.341.66MaleNoSunDinner321.013.5MaleNoSunDinner323.683.31MaleNoSunDinner224.593.61FemaleNoSunDinner4數(shù)據(jù)集介紹Titanic數(shù)據(jù)集titanic是一個(gè)關(guān)于Titanic乘客情況統(tǒng)計(jì)數(shù)據(jù),包括了每個(gè)乘客的15項(xiàng)信息:Survived:是否獲救,0=否,1=是;Pclass:票的等級(jí),1=頭等,2=2等
21、,3=3等;Sex:性別,male/female;Age:年齡,如果小于1歲,就會(huì)用小數(shù)表示;Sibsp:同行夫妻/兄妹人數(shù);Parch:同行父母/兒女人數(shù);Fare:票價(jià);Embarked:登船港口代碼,S=Southampton,C=Cherbourg,Q=Queenstown;數(shù)據(jù)集介紹Class:票的等級(jí),取值為First、Second、Third;Who:性別,取值為Man、Women;adult_male:是否成年男人,取值True、False;deck:甲板層號(hào),取值A(chǔ)、B、C、D、E、F、G;embark_town:登船港口城市名,取值Southampton,Cherbourg
22、,Queenstown;alive:是否獲救,取值yes、no;alone:是否單人,取值True、false。乘客數(shù)據(jù)舉例:(1,1,female,38.0,1,0,71.2833,C,F(xiàn)irst,woman,F(xiàn)alse,C,Cherbourg,yes,F(xiàn)alse)。分類散點(diǎn)圖Seaborn的分類圖分為三組:分類變量在每個(gè)類別上顯示的觀測(cè)值抽象出每個(gè)觀測(cè)值的分布應(yīng)用統(tǒng)計(jì)估計(jì)值顯示中心趨勢(shì)測(cè)量值的觀測(cè)值和置信區(qū)間第一組包括函數(shù)swarmplot()和stripplot()第二組包括boxplot()和violinplot()第三組包括barplot()和pointplot()盡管這些函數(shù)都有其
23、特定的參數(shù)用于控制該數(shù)據(jù)的可視化的詳細(xì)信息,但這些函數(shù)都共用一套基礎(chǔ)API來(lái)規(guī)范如何接收數(shù)據(jù)。分類散點(diǎn)圖分類散點(diǎn)圖用來(lái)顯示變量在每個(gè)類別上的觀測(cè)值。使用stripplot()可以非常簡(jiǎn)單的將某種分類別的數(shù)據(jù)展現(xiàn)在散點(diǎn)圖上tips = sns.load_dataset(tips) sns.stripplot(x=day,y=total_bill,data=tips)plt.show()分類散點(diǎn)圖在帶狀圖中,散點(diǎn)圖通常會(huì)重疊,使得很難看到數(shù)據(jù)的完全分布。解決方案是沿著分類軸使用一些隨機(jī)的“抖動(dòng)”來(lái)調(diào)整位置。tips = sns.load_dataset(tips) sns.stripplot(x=
24、day,y=total_bill,data=tips,jitter=True)plt.show()也可以使用函數(shù)swarmplot(),它使用避免重疊點(diǎn)的算法定位分類軸上的每個(gè)散點(diǎn)圖點(diǎn),從而保障所有點(diǎn)都不重疊。tips = sns.load_dataset(tips) sns.swarmplot(x=day,y=total_bill,data=tips)plt.show()分類散點(diǎn)圖帶分布的散點(diǎn)圖值分布圖箱線圖箱線圖是一種用作顯示一組數(shù)據(jù)分散情況資料的統(tǒng)計(jì)圖。其繪制須使用常用的統(tǒng)計(jì)量,能提供有關(guān)數(shù)據(jù)位置和分散情況的關(guān)鍵信息。箱形圖提供了一種只用5個(gè)點(diǎn)對(duì)數(shù)據(jù)集做簡(jiǎn)單總結(jié)的方式。這5個(gè)點(diǎn)包括中點(diǎn)、
25、Q1、Q3、分部狀態(tài)的高位和低位。箱形圖很形象的分為中心、延伸以及分布狀態(tài)的全部范圍。import seaborn as snssns.set_style(whitegrid)tips = sns.load_dataset(tips)# 分組繪制箱線圖,分組因子是day,在x軸不同位置繪制ax = sns.boxplot(x=day, y=total_bill, data=tips)as.show()值分布圖箱線圖值分布圖小提琴圖小提琴圖其實(shí)是箱線圖與核密度圖的結(jié)合,箱線圖展示了分位數(shù)的位置,小提琴圖則展示了任意位置的密度,通過(guò)小提琴圖可以知道哪些位置的密度較高。在圖中,白點(diǎn)是中位數(shù),黑色盒型
26、的范圍是下四分位點(diǎn)到上四分位點(diǎn),細(xì)黑線表示須(離散值)。外部形狀即為核密度估計(jì)。在概率論中用來(lái)估計(jì)未知的密度函數(shù),屬于非參數(shù)檢驗(yàn)方法之一。值分布圖小提琴圖import seaborn as snssns.set_style(whitegrid)tips = sns.load_dataset(tips)# 繪制小提琴圖ax = sns.violinplot(x=tipstotal_bill)ax.show()值分布圖小提琴圖同樣,可以使用分組因子進(jìn)行分組,比如按照day分組繪圖。進(jìn)一步,還可以使用hue參數(shù)進(jìn)一步分組,比如使用smoker作為hue因子。統(tǒng)計(jì)估計(jì)圖進(jìn)行數(shù)據(jù)統(tǒng)計(jì)分析時(shí),通常需要顯示
27、值的集中趨勢(shì)。Seaborn有兩種主要方式來(lái)顯示這些信息:條形圖統(tǒng)計(jì)繪圖會(huì)使用統(tǒng)計(jì)參數(shù)傳入統(tǒng)計(jì)函數(shù),從而可以在繪圖的時(shí)候使用。這時(shí)會(huì)先對(duì)分組變量使用統(tǒng)計(jì)函數(shù),然后繪圖。缺省的統(tǒng)計(jì)函數(shù)是均值函數(shù)(means)。點(diǎn)圖條形圖的一種特殊情況是,想要顯示每個(gè)類別中的觀察值數(shù)量,而不是根據(jù)第二個(gè)維度變量的統(tǒng)計(jì)量。在Seaborn中,使用countplot()函數(shù)實(shí)現(xiàn)。統(tǒng)計(jì)估計(jì)圖條形圖顯示值的集中趨勢(shì)就是要展示每個(gè)類別中數(shù)據(jù)點(diǎn)的個(gè)數(shù)與第二個(gè)因子的關(guān)系,而不是每個(gè)類別中數(shù)據(jù)點(diǎn)的個(gè)數(shù)。比如說(shuō),需要了解在Titanic沉船事故中船票等級(jí)與獲救的關(guān)系,就需要展示持有每個(gè)等級(jí)的船票的乘客的獲救比例。titanic =
28、 sns.load_dataset(titanic) sns.swarmplot(x=sex, y=survived, hue=class, data=titanic)plt.show()統(tǒng)計(jì)估計(jì)圖計(jì)數(shù)條形圖條形圖的一種特殊情況是,想要顯示每個(gè)類別中的觀察值數(shù)量,而不是根據(jù)第二個(gè)維度變量的統(tǒng)計(jì)量。在seaborn中,使用countplot()函數(shù)實(shí)現(xiàn)。統(tǒng)計(jì)估計(jì)圖titanic = sns.load_dataset(titanic) sns.countplot(x=deck, data=titanic, palette=Greens_d)plt.show()可視化數(shù)據(jù)的分布圖 單變量分布圖在Se
29、aborn中想要對(duì)單變量分布進(jìn)行快速了解最方便的就是使用distplot()函數(shù),默認(rèn)情況下它將繪制一個(gè)直方圖,并且可以同時(shí)畫出核密度估計(jì)1.直方圖 2.核密度估計(jì)圖 3.擬合參數(shù)分布圖x = np.random.normal(size=100)sns.distplot(x, bins=20,kde=False,rug=True)sns.plt.show()可視化數(shù)據(jù)的分布圖 1.直方圖在Seaborn中最便捷的方式構(gòu)造一個(gè)單變量分布是用distplot()方法。在繪制直方圖時(shí),如果想要指定數(shù)據(jù)段的多少可以通過(guò)參數(shù)bins來(lái)控制。密度曲線可以通過(guò)設(shè)置參數(shù)kde=False去掉。2.核密度估計(jì)圖
30、 要繪制核密度函數(shù)只需在displot()函數(shù)中通過(guò)參數(shù)hist把直方圖抹掉即可。但是Seaborn中提供了專門的kdeplot()函數(shù),它內(nèi)部調(diào)用了distplot(),但提供了一個(gè)更直接的界面。kdeplot()的帶寬參數(shù)bw控制估計(jì)與數(shù)據(jù)的擬合程度,非常類似于直方圖中的bin大小。它對(duì)應(yīng)于我們?cè)谏厦胬L制的內(nèi)核的寬度。可視化數(shù)據(jù)的分布圖 x = np.random.normal(size=100)sns.kdeplot(x,shade=True)plt.show()x = np.random.normal(size=100)sns.kdeplot(x,bw=2,label=bw:2)plt
31、.show()可視化數(shù)據(jù)的分布圖 3.擬合參數(shù)分布圖還可以使用distplot()將參數(shù)分布擬合到數(shù)據(jù)集,并直觀地評(píng)估它與觀察數(shù)據(jù)的對(duì)應(yīng)程度。實(shí)現(xiàn)的代碼如下可視化數(shù)據(jù)的分布圖 x = np.random.gamma(6,size=200)sns.distplot(x,kde=False,fit=stats.gamma)sns.plt.show()Seaborn可以用jointplot()方法非常容易的繪制出聯(lián)合變量、單變量的圖。使用kind參數(shù)可以設(shè)置不同的圖形反應(yīng)兩變量的關(guān)系,比如點(diǎn)圖,線圖,核密度圖。1.生成多維正態(tài)分布數(shù)據(jù)2.雙變量散點(diǎn)分布圖 3.雙變量六邊形分布圖 4.雙變量核密度估計(jì)
32、圖 可視化數(shù)據(jù)的分布圖 雙變量分布圖1.生成多維正態(tài)分布數(shù)據(jù)可視化數(shù)據(jù)的分布圖 #使用numpy,pandas生成多維正態(tài)分布數(shù)據(jù)mean, coy = 0,1, (1, .5), (.5, 1)#多元正態(tài)分布,200 rows data = np.random.multivariate_normal(mean,cov,200)df = pd.DataFrame(data, column=“x”, “y”)2.雙變量散點(diǎn)分布圖 Seaborn中是使用jointplot()方法??梢暬瘮?shù)據(jù)的分布圖 代碼如下,#在一張圖中三屏顯示sns.jointplot(x=”x”,y=”y”,data=df)
33、 3.雙變量六邊形分布圖 直方圖的二元模擬稱為六邊形圖,這個(gè)圖對(duì)相對(duì)大的數(shù)據(jù)集非常有效,matplotlib的plt.hexbin()方法和jointplot()類似。 可視化數(shù)據(jù)的分布圖 #六邊形圖x, y = np.random.multivariate_normal(mean, cov, 1000).Twith sns.axes_style(“white”): sns.jointplot(x=x, y=y, kind=”hex”, color=”k”); sns.jointplot(x=”x”,y=”y”,data=df)3.雙變量六邊形分布圖 可視化數(shù)據(jù)的分布圖 4.雙變量核密度估計(jì)圖
34、 在Seaborn中,核密度估計(jì)中使用輪廓圖來(lái)可視化二維分布代碼可視化數(shù)據(jù)的分布圖 可視化線性回歸關(guān)系圖Seaborn中回歸圖主要是引導(dǎo)增強(qiáng)可視化,有助于數(shù)據(jù)分析中發(fā)現(xiàn)數(shù)據(jù)間關(guān)系。所以,Seaborn并不是一個(gè)數(shù)據(jù)分析包,它的目標(biāo)時(shí)是通過(guò)更快速、更容易的可視化來(lái)探索數(shù)據(jù)關(guān)系。1.導(dǎo)入數(shù)據(jù)2.線性回歸函數(shù)圖3.離散值的線性回歸圖可視化線性回歸關(guān)系圖1.導(dǎo)入數(shù)據(jù)首先導(dǎo)入各個(gè)數(shù)據(jù)分析包和Tips數(shù)據(jù)集。#導(dǎo)入數(shù)據(jù)分析包import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snssns
35、.set(color_codes=True)np.random.seed(sum(map(ord, “regression”)tips = sns.load_dataset(“tips”)可視化線性回歸關(guān)系圖2.線性回歸函數(shù)圖在Seaborn中,有兩個(gè)方法通過(guò)回歸用于可視化線性關(guān)系:regplot()方法接受的輸入?yún)?shù)x和y變量的格式;lmplot()方法必須有參數(shù)設(shè)置,并且x和y必須是字符串。#對(duì)tips數(shù)據(jù)使用regplot()方法進(jìn)行可視化sns.regplot(x=”total_bill”, y=”tip”, data=tips);#對(duì)tips數(shù)據(jù)使用lmplot()方法進(jìn)行可視化sn
36、s.lmplot(x=”total_bill”, y=”tip”, data=tips);可視化線性回歸關(guān)系圖3.離散值的線性回歸圖當(dāng)有其中一個(gè)變量是離散值時(shí),可以對(duì)其進(jìn)行線性回歸擬合。但是,通過(guò)這種數(shù)據(jù)集生成的簡(jiǎn)單散點(diǎn)圖往往不是最優(yōu)的。一種選擇是通過(guò)往離散數(shù)據(jù)中添加一些隨機(jī)“抖動(dòng)”,使得這些值得分布更加清晰;另一種選擇是在置信區(qū)間內(nèi)對(duì)中心趨勢(shì)進(jìn)行估計(jì)??梢暬€性回歸關(guān)系圖#以size為橫坐標(biāo)的散點(diǎn)圖sns.lmplot(x=”size”, y=”tip”, data=tips);#添加“抖動(dòng)”到xsns.lmplot(x=”size”, y=”tip”, data=tips, x_jitte
37、r=.05);#沿置信區(qū)間繪制中心趨勢(shì)估計(jì)圖sns.lmplot(x=”size”, y=”tip”, data=tips, x_estimator=np.mean);帶有“抖動(dòng)”的線性回歸圖置信區(qū)間中心趨勢(shì)估計(jì)圖多面板分類圖繪制多分類的圖形最主要使用的就是factorplot()函數(shù),使用factorplot()的主要優(yōu)點(diǎn)是,很容易繪圖同時(shí)觀測(cè)其他分類變量以此來(lái)對(duì)照。sns.factorplot(x=time, y=total_bill, hue=smoker,col=day, data=tips, kind=box, size=4, aspect=.5)plt.show()熱力圖熱力圖是一
38、個(gè)把變量的值通過(guò)在二維圖上的顏色來(lái)表示的數(shù)據(jù)可視化方式。熱力圖經(jīng)常以特殊高亮的形式顯示訪客熱衷的頁(yè)面區(qū)域和訪客所在的地理區(qū)域。# 繪制x-y-z的熱力圖,比如 年-月-乘客數(shù)量的熱力圖flights = sns.load_dataset(flights)flights = flights.pivot(month, year, passengers)ax = sns.heatmap(flights) sns.plt.show()Bokeh是一個(gè)專門針對(duì)Web瀏覽器的呈現(xiàn)功能的交互式可視化Python庫(kù),可以以各種途徑實(shí)現(xiàn)數(shù)據(jù)可視化。PART 05 Bokeh可視化模塊Bokeh簡(jiǎn)介Bokeh與其
39、它可視化庫(kù)最核心的區(qū)別:Bokeh是一個(gè)專門針對(duì)Web瀏覽器的呈現(xiàn)功能的交互式可視化Python庫(kù)。Bokeh數(shù)據(jù)可視化流程:Bokeh捆綁了多種語(yǔ)言(Python, R, lua和Julia)這些捆綁的語(yǔ)言產(chǎn)生了一個(gè)JSON文件,這個(gè)文件作為BokehJS(一個(gè)Java庫(kù))的一個(gè)輸入之后會(huì)將數(shù)據(jù)展示到Web瀏覽器上Bokeh圖表的輸出方式,可以是JSON對(duì)象、HTML文件或是交互式網(wǎng)絡(luò)應(yīng)用。Bokeh簡(jiǎn)介Bokeh數(shù)據(jù)可視化流程圖:Bokeh簡(jiǎn)介Bokeh具有如下優(yōu)勢(shì):Bokeh允許使用者通過(guò)簡(jiǎn)單的指令快速創(chuàng)建復(fù)雜的統(tǒng)計(jì)圖;Bokeh可以提供到各種媒體,如HTML,Notebook文檔和服務(wù)
40、器的輸出;Bokeh可以將可視化嵌入Flask和Django程序Bokeh可以轉(zhuǎn)換其它可視化庫(kù)(如matplotlib,Seaborn和ggplot)的可視化結(jié)果;Bokeh能靈活地將交互式應(yīng)用、布局和不同樣式選擇用于可視化。用Bokeh實(shí)現(xiàn)可視化Bokeh提供了強(qiáng)大而靈活的功能,使其操作簡(jiǎn)單并高度定制化。它為用戶提供了多級(jí)可視化界面的接口,以滿足不同級(jí)別用戶的需求。用Bokeh實(shí)現(xiàn)可視化圖表(Charts):一個(gè)高級(jí)接口,用來(lái)簡(jiǎn)單快速地建立復(fù)雜的統(tǒng)計(jì)圖表;繪圖(Plotting):一個(gè)中級(jí)接口,以構(gòu)建各種視覺(jué)符號(hào)為核心;模塊(Models):一個(gè)低級(jí)接口,為應(yīng)用程序開(kāi)發(fā)人員提供最大的靈活性。
41、Bokeh的圖表接口Bokeh的圖表(Charts)是一個(gè)高級(jí)接口,用于通過(guò)標(biāo)準(zhǔn)的可視化方式呈現(xiàn)信息。這些方式包括箱線圖、柱狀圖、面積圖、熱圖、甜甜圈圖和許多其它圖形。使用Bokeh的圖表接口創(chuàng)建一個(gè)圖表的通用步驟:導(dǎo)入庫(kù)和函數(shù)/方法;準(zhǔn)備數(shù)據(jù)設(shè)置輸出模式(Notebook文檔、Web瀏覽器或服務(wù)器);創(chuàng)建圖表并選擇圖表的樣式(如果需要);可視化圖表。柱狀圖使用Bokeh創(chuàng)建一個(gè)柱狀圖并在Web瀏覽器上顯示。#導(dǎo)入庫(kù)函數(shù)from bokeh.charts import Bar,output_file,show#在電腦屏幕上使用output_notebook來(lái)可視化數(shù)據(jù)#準(zhǔn)備數(shù)據(jù)(數(shù)據(jù)模擬)da
42、ta=“y”:1,2,3,4,5#輸出到Line.HTMLoutput_file(“l(fā)ines.html”, title=”line plot example”)#創(chuàng)建一個(gè)新的含有標(biāo)題和軸標(biāo)簽的在線窗口p=Bar(data,title=“Line Chart Example”,xlabel=x,ylabel=values,width=400,height=400)#顯示結(jié)果show(p)柱狀圖Bokeh繪制的柱狀圖:箱線圖在Notebook文檔中,利用箱線圖比較IRIS數(shù)據(jù)集中的萼片長(zhǎng)度(sepal length)和花瓣長(zhǎng)度(petal length)的分布情況。#Iris數(shù)據(jù)集from sk
43、learn.datasets import load_irisimport pandas as pdiris=load_iris()df=pd.DataFrame(iris.data)df.clumns=petal_width,petal_length,sepal_width,sepal_length#導(dǎo)入庫(kù)函數(shù)from bokeh.charts import BoxPlot, output_notebook,showdata=dfpetal_length,sepal_length箱線圖#輸出到電腦屏幕上output_notebook()#創(chuàng)建一個(gè)新的含有標(biāo)題和軸標(biāo)簽的在線窗口p=BoxPlo
44、t(data, width=400,height=400)#顯示結(jié)果show(p)箱線圖Bokeh繪制的箱線圖:線狀圖用Python基本數(shù)據(jù)類型list的一些數(shù)據(jù)畫一個(gè)線狀圖,并包括縮放,區(qū)域選擇,調(diào)整尺寸,保存等工具,是一個(gè)簡(jiǎn)答又直接的實(shí)現(xiàn)方式。from bokeh.plotting import figure, output_file, show# 準(zhǔn)備數(shù)據(jù)x = 1, 2, 3, 4, 5 y = 6, 7, 2, 4, 5# 輸出到static HTML 文件output_file(lines.html, title=line plot example)#創(chuàng)建一個(gè)新的含有標(biāo)題和軸標(biāo)簽的
45、圖表p = figure(title=simple line example, x_axis_label=x, y_axis_label=y)# 添加一個(gè)帶有圖標(biāo)的線狀圖p.line(x, y, legend=Temp., line_width=2)# 顯示結(jié)果show(p)線狀圖Bokeh繪制的線狀圖:Bokeh的繪圖接口繪圖是Bokeh的一個(gè)中級(jí)接口,是以構(gòu)建視覺(jué)符號(hào)為核心的接口。在這里,用戶可以綜合各種視覺(jué)元素(點(diǎn)、圓、線、補(bǔ)丁和許多其它元素)和工具(懸停、縮放、保存、重置和其它工具)來(lái)創(chuàng)建可視化。使用Bokeh的繪圖接口創(chuàng)建的圖表自帶一組默認(rèn)的工具和視覺(jué)效果。繪圖可按照以下步驟進(jìn)行:導(dǎo)
46、入庫(kù)、方法或函數(shù);選擇輸出方式(Notebook文檔、Web瀏覽器、服務(wù)器);激活圖(類似matplotlib);執(zhí)行后續(xù)的繪圖操作,這將影響已經(jīng)生成的圖形;圖表可視化。二維散點(diǎn)圖在Notebook文檔中創(chuàng)建二維散點(diǎn)圖(正方形標(biāo)記)。from bokeh.plotting import figure,output_notebook,show#輸出到電腦屏幕上output_notebook()p = figure(plot_width=400,plot_height=400)#添加一個(gè)矩形框,標(biāo)有大小、顏色、alpha值p.square(2,5,6,4,2,3,2,1,2,size=20,col
47、or=”navy”)#顯示結(jié)果show(p)二維散點(diǎn)圖Bokeh繪制的二維散點(diǎn)圖:兩種視覺(jué)元素合并圖將兩種視覺(jué)元素合并在一張圖中。from bokeh.plotting import figure,output_notebook,show#輸出到電腦屏幕上output_notebook()p = figure(plot_width=400,plot_height=400)#添加一個(gè)矩形框,標(biāo)有大小、顏色、alpha值p.square(2,5,6,4,2,3,2,1,2,size=20,color=”navy”)#添加一條線到已經(jīng)存在的圖形中p.line(1,2,3,4,5,1,2,2,4,5,
48、line_width=2)#顯示結(jié)果show(p)兩種視覺(jué)元素合并圖Bokeh繪制的兩種視覺(jué)元素合并圖:繪制懸停工具添加一個(gè)懸停工具和坐標(biāo)軸標(biāo)簽。from bokeh.plotting import figure,output_notebook,showfrom bokeh.modles import HoverTool,BoxSelectTool#輸出到電腦屏幕上output_notebook()#添加懸停工具TOOLS = BoxSelectTool(), HoverTool()p = figure(plot_width=400,plot_height=400,toos=TOOLS)#添加一個(gè)矩形框,標(biāo)有大小、顏色、alpha值
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- “JUZI漢語(yǔ)”軟件在HSK詞匯教學(xué)中的應(yīng)用研究
- JS銀行ESG管理體系優(yōu)化研究
- 讀后續(xù)寫教學(xué)中高中英語(yǔ)教師的教學(xué)信念對(duì)其教學(xué)行為影響的個(gè)案研究
- 玩具設(shè)計(jì)核心要素與創(chuàng)新實(shí)踐
- 孩子作業(yè)書寫培訓(xùn)
- 電信網(wǎng)絡(luò)安全班會(huì)
- 腦動(dòng)靜脈畸形MRI診斷
- 頤和園英文課件
- 三減三健健康知識(shí)教育
- 心內(nèi)科胸悶氣促的護(hù)理診斷
- 小兒喘息性肺炎的護(hù)理
- 新能源產(chǎn)業(yè)中液流電池儲(chǔ)能電站項(xiàng)目的成功要素解析
- 2877管理學(xué)基礎(chǔ)1-15套試題答案 國(guó)開(kāi)
- 2025陜西中考語(yǔ)文試題(含答案)
- 物業(yè)培訓(xùn)課件大全
- Unit 1 This is me 語(yǔ)法提升 課件 外研版英語(yǔ)八年級(jí)上冊(cè)
- 中國(guó)LNG加氣站行業(yè)發(fā)展分析及發(fā)展前景與投資研究報(bào)告2025-2028版
- 文化禮堂g管理制度
- 順昌縣土地綜合整治項(xiàng)目可行性研究報(bào)告
- 樂(lè)器演奏團(tuán)行業(yè)深度調(diào)研及發(fā)展項(xiàng)目商業(yè)計(jì)劃書
- 2024年7月遼寧高中學(xué)業(yè)水平合格考地理試卷真題(含答案)
評(píng)論
0/150
提交評(píng)論