




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上Python數(shù)據(jù)可視化編程實踐-繪制圖表準(zhǔn)備工作打開Jupyter Notebook,導(dǎo)入需要的包,并配置好圖片交互和中文顯示環(huán)境:import pandas as pdimport numpy as npimport sysreload(sys)sys.setdefaultencoding('utf-8')import matplotlib as mplimport matplotlib.pyplot as pltimport matplotlib.cm as cm%matplotlib inlineplt.rcParams'font.san
2、s-serif'='SimHei' #用來正常顯示中文標(biāo)簽plt.rcParams'axes.unicode_minus'=False #用來正常顯示負(fù)號定義圖表類型柱狀圖、線形圖和堆積柱狀圖調(diào)用figure()方法,創(chuàng)建一個新的圖表,接下來的繪圖操作都在此圖表中進(jìn)行,參數(shù)figsize=(12,6)表示該圖表的大小。調(diào)用subplot(231)方法把圖表分割成2行3列的網(wǎng)格,1表示圖形的標(biāo)號。x = 1, 2, 3, 4y =5, 4, 3, 2plt.figure(figsize=(12,6)plt.subplot(231)plt.plot(x,y)
3、 # 折線圖plt.subplot(232)plt.bar(x,y) # 垂直柱狀圖plt.subplot(233)plt.barh(x,y) # 水平柱狀圖plt.subplot(234)plt.bar(x,y)y1= 7,8,5,3plt.bar(x,y1,bottom=y,color='r') # 堆疊柱狀圖 設(shè)置參數(shù)bottom=yplt.subplot(235)plt.boxplot(x) # 箱線圖plt.subplot(236)plt.scatter(x,y) # 散點圖plt.show()具體解釋下箱線圖中的幾個最重要的顯示選項。首先,我們可以添加從箱體延伸出來
4、的箱須來展示數(shù)據(jù)集合的整個范圍。箱體和箱須主要用于表現(xiàn)一個或多個數(shù)據(jù)集合中數(shù)據(jù)的編號,容易對數(shù)據(jù)進(jìn)行對比而且易于理解。在同一個箱線圖中可以呈現(xiàn)5種數(shù)據(jù)。最小值:數(shù)據(jù)集合的最小值。第二四分位數(shù):其以下為數(shù)據(jù)集合中較低的25%數(shù)據(jù)。中值:數(shù)據(jù)集合的中值第三四分位數(shù):其以上為數(shù)據(jù)集合中較高的25%數(shù)據(jù)。最大值:給定數(shù)據(jù)集合的最大值。dataset = 113, 115, 119, 121, 124,124, 125, 126, 126, 126,127, 127, 128, 129, 130,130, 131, 132, 133, 136plt.figure(figsize=(10,6)plt.su
5、bplot(121)plt.boxplot(dataset, vert = False)plt.subplot(122)plt.hist(dataset)plt.show()我們用同一個數(shù)據(jù)集合來繪制箱線圖和直方圖,觀察兩種圖表在數(shù)據(jù)展現(xiàn)上的差異。左圖呈現(xiàn)了五個統(tǒng)計數(shù)據(jù),右圖展示了數(shù)據(jù)集合在給定范圍內(nèi)的分組情況。簡單的正弦圖和余弦圖我們對從-Pi到Pi之間具有相同線性距離的256個點來計算正弦值和余弦值,然后把sin(x)值和cos(x)值在用以圖表中繪制出來。x = np.linspace(-np.pi, np.pi, 256, endpoint=True)y = np.cos(x)y1 =
6、 np.sin(x)plt.figure(figsize=(10,6)plt.plot(x, y)plt.plot(x, y1)plt.title("Functions $sin$ and $cos$") #設(shè)置圖標(biāo)題plt.xlim(-3.0, 3.0) #設(shè)置x軸范圍plt.ylim(-1.0, 1.0) #設(shè)置y軸范圍plt.xticks(-np.pi, -np.pi/2, 0, np.pi/2, np.pi,r'$-pi$', r'$-pi/2$', r'$0$', r'$+pi/2$', r'
7、$+pi$') # 用希臘字母標(biāo)注x軸標(biāo)簽plt.yticks(-1, 0, +1,r'$-1$', r'$0$', r'$+1$')plt.show()設(shè)置坐標(biāo)軸長度和范圍如果不實用axis()或者其他參數(shù)設(shè)置,matplotlib會自動使用最小值,剛好可以讓我們在一個圖中看到所有的數(shù)據(jù)點。調(diào)用autoscale()方法,會以坐標(biāo)軸的最佳大小適應(yīng)數(shù)據(jù)的顯示。axis()里面的值分別表示坐標(biāo)軸上xmin、xmax、ymin、ymaxaxhline()表示繪制了一條y=0的水平線axvline()表示繪制了一條x=0的垂直線axhline(
8、4)表示繪制了一條y=4的水平線l=-1, 1, -10, 10plt.axis(l)plt.axhline()plt.axvline()plt.axhline(4)設(shè)置圖表的線型、屬性和格式化字符串常見的線條樣式:- 直線-虛線-. -.形式: 細(xì)小虛線常見的點樣式:s-方形h-六角形H-六角形*-星號+-加好x-x型d-菱形D-菱形p-五角形常見的顏色樣式:c-cyan-青色r-red-紅色m-magente-品紅g-green-綠色b-blue-藍(lán)色y-yellow-黃色k-black-黑色w-white-白色# plot(x軸數(shù)據(jù),y軸數(shù)據(jù),展現(xiàn)形式)x = 1, 2, 3, 4, 8
9、y = 5, 7, 2, 1, 5plt.plot(x, y, '-', color='g', linewidth=0.8)plt.plot(x, y,'*',color='r') #散點圖plt.show()設(shè)置刻度、刻度標(biāo)簽和網(wǎng)格刻度是圖形的一部分,由刻度定位器(指定刻度所在的位置)和刻度格式器(指定刻度顯示的樣式)組成??潭扔兄骺潭群痛慰潭?,默認(rèn)次刻度不顯示。locator_params()方法控制刻度定位器,可以控制刻度的數(shù)目。plt.figure(figsize=(10,6)# 獲取當(dāng)前坐標(biāo)ax = plt.gca()#
10、 設(shè)置緊湊視圖,設(shè)置刻度間隔最大為10ax.locator_params(tight=True, nbins = 10)# 生成100個正態(tài)分布值ax.plot(np.random.normal(10, .1, 100)plt.show()使用dates模塊的一個例子來說明刻度格式器的配置??潭雀袷狡饕?guī)定了值的顯示方式。import datetimefig = plt.figure(figsize=(10,6)# 獲取當(dāng)前的坐標(biāo)軸ax = plt.gca()# 設(shè)置一些日期區(qū)間start = datetime.datetime(2013, 01, 01)stop = datetime.date
11、time(2013, 12, 31)delta = datetime.timedelta(days = 1)# 轉(zhuǎn)換日期dates = mpl.dates.drange(start, stop, delta)# 產(chǎn)生一些隨機(jī)值values = np.random.rand(len(dates)ax = plt.gca()# 用日期值畫圖ax.plot_date(dates, values, linestyle='-', marker='')# 指定格式date_format = mpl.dates.DateFormatter('%Y-%m-%d'
12、)# 應(yīng)用格式ax.xaxis.set_major_formatter(date_format)# 自動格式日期標(biāo)簽fig.autofmt_xdate()plt.show()添加圖例和注解圖例和注解清洗連貫地解釋了數(shù)據(jù)圖表的內(nèi)容。通過給給個plot添加一個關(guān)于所顯示數(shù)據(jù)的簡短描述,能讓觀察者更容易理解。在每個plot中指定了一個字符串標(biāo)簽(label),這樣legend()會把它們添加到圖例框中。通過loc參數(shù)確定圖例框的位置。annotate()可以為xy坐標(biāo)位置的數(shù)據(jù)點添加字符串描述。通過設(shè)置xycoord='data',可以指定注解和數(shù)據(jù)使用相同的坐標(biāo)系,注解文本的起始位
13、置通過xytext指定。箭頭由xytext指向xy坐標(biāo)位置。arrowstyle指定了箭頭風(fēng)格。plt.figure(figsize=(10, 6)# 生成不同正態(tài)分布值x1 = np.random.normal(30, 3, 100)x2 = np.random.normal(20, 2, 100)x3 = np.random.normal(10, 3, 100)# 在同張畫布里畫3條線plt.plot(x1, label='plot')plt.plot(x2, label='2nd plot')plt.plot(x3, label='3nd plot
14、')# 生成圖例框plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, ncol=3, mode="expand", borderaxespad=0.)# 注解重要值plt.annotate("Important value:(55, 20)", (55, 20), xycoords='data', xytext=(5, 38), arrowprops=dict(arrowstyle='->')plt.show()移動軸線到圖中央軸線定義了數(shù)據(jù)區(qū)域的邊界
15、,把坐標(biāo)軸刻度標(biāo)記連接起來。一共有四個軸線,可以把它們放置在任何位置。默認(rèn)情況下,它們被放置在坐標(biāo)軸的邊界。為了把軸線移到圖中央,需要把其中兩個軸線隱藏起來(設(shè)置color為none)。然后,移動另外兩個到坐標(biāo)(0,0)。坐標(biāo)為數(shù)據(jù)空間坐標(biāo)。x = np.linspace(-np.pi, np.pi, 500, endpoint=True)y = np.sin(x)plt.plot(x, y)ax = plt.gca()ax.spines'right'.set_color('none') # 隱藏右邊的軸線ax.spines'top'.set_c
16、olor('none') # 隱藏頂端的軸線ax.spines'bottom'.set_position('data', 0) # 移動底端的軸線到(0,0)ax.spines'left'.set_position('data', 0) # 移動左端的軸線到(0,0)ax.xaxis.set_ticks_position('bottom') # 移動底端的刻度到x軸ax.yaxis.set_ticks_position('left') # 移動左側(cè)的刻度到x軸plt.show()繪制
17、直方圖直方圖被用于可視化數(shù)據(jù)的分布估計。表示一定間隔下數(shù)據(jù)點頻率的垂直矩陣稱為bin。bin以固定的間隔創(chuàng)建,因此直方圖的總面積等于數(shù)據(jù)點的數(shù)量。直方圖可以顯示數(shù)據(jù)的相對頻率,而不是使用數(shù)據(jù)的絕對值。在這種情況下,總面積等于1。mu = 100sigma = 15x = np.random.normal(mu, sigma, 10000)ax = plt.gca()ax.hist(x, bins=35, color='r', normed=True) # normed=True ,直方圖的值將進(jìn)行歸一化處理,形成概率密度。默認(rèn)值為Falseax.set_xlabel('
18、值')ax.set_ylabel('頻率')ax.set_title(r'$mathrmHistogram: mu=%d, sigma=%d$' % (mu, sigma)plt.show()繪制誤差條形圖誤差條可以用來可視化數(shù)據(jù)集中的測量不確定度或者指出錯誤。經(jīng)常使用到的參數(shù):xerr和yerr:用于在柱狀圖上生成誤差條。width:給定誤差條的寬度,默認(rèn)值是0.8.bottom:如果指定了bottom,其值會加到高度中,默認(rèn)值為None。edgecolor:給定誤差條邊界顏色。ecolor:指定誤差條的顏色。linewidth:誤差條邊界寬度,可以設(shè)
19、為None(默認(rèn)值)和0(此時誤差條邊界將不顯示出來)orientation:有vertical和horizontal兩個值。x = np.arange(0, 10, 1)y = np.log(x)xe = 0.1 * np.abs(np.random.randn(len(y)plt.bar(x, y, yerr=xe, width=0.4, align='center', ecolor='r', color='cyan', label='experiment #1')plt.xlabel('# measurement
20、39;)plt.ylabel('Measured values')plt.title('Measurements')plt.legend(loc='upper left')plt.show()繪制餅圖餅圖顯示的數(shù)據(jù)集合加起來必須等于100%,否則它就是無意義的、無效的。餅圖描述數(shù)值的比例關(guān)系,其中每個扇區(qū)的弧長大小為其所表示的數(shù)量的比例。餅圖的缺點:1.難以對數(shù)量進(jìn)行比較。2.以特定角度的方式和一定顏色的扇形展示數(shù)據(jù),會使我們的感覺有傾向性,從而影響我們對于所呈現(xiàn)數(shù)據(jù)得到的結(jié)論。plt.figure(figsize=(6, 6)ax = plt.
21、axes(0.1, 0.1, 0.8, 0.8)labels = 'Spring', 'Summer', 'Autumn', 'Winter'# 餅圖的每部分定義為x/sum(x),或者為x if sum(x)<=1x = 15, 30, 45, 10# 給定一個分裂序列,每一個元素表示每個圓弧間偏移量,為半徑的百分比explode = (0.1, 0.1, 0.1, 0.1)# 如果沒有指定startangle,扇區(qū)將從x軸開始逆時針排列,如果指定的值為90,餅圖將從y軸開始# autpct參數(shù)用來格式化繪制在圓弧中的標(biāo)簽
22、plt.pie(x, explode=explode, labels=labels, autopct='%1.1f%', startangle=67)plt.title('Rainy days by season')plt.show()繪制帶填充區(qū)域的圖表對曲線間或者曲線下面的區(qū)域填充顏色,這對我們理解給定的特定信息是非常有必要的。x = np.arange(0.0, 2, 0.01)y1 = np.sin(2*np.pi*x)y2 = 1.2*np.sin(4*np.pi*x)fig = plt.figure(figsize=(10, 6)ax = plt.g
23、ca()# 繪制出兩個信號的圖形ax.plot(x, y1, x, y2, color='black')# fill_between()方法使用x為定位點選取y值(y1,y2),用where參數(shù)指定條件來填充曲線,where參數(shù)接手布爾值(可以是表達(dá)式)ax.fill_between(x, y1, y2, where=y2>=y1, facecolor='darkblue', interpolate=True)ax.fill_between(x, y1, y2, where=y2<=y1, facecolor='deeppink', interpolate
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 店鋪商鋪租賃合同樣本
- 數(shù)字智慧方案5895丨智慧井蓋管理系統(tǒng)解決方案
- 插畫技術(shù)課件
- 2024北京延慶一中高一10月月考數(shù)學(xué)試題及答案
- 睡覺的安全課件
- 傳染病防控知識和健康教育講課件
- 2025年農(nóng)業(yè)物聯(lián)網(wǎng)在農(nóng)業(yè)生產(chǎn)物聯(lián)網(wǎng)與物聯(lián)網(wǎng)設(shè)備中的應(yīng)用效果
- 網(wǎng)絡(luò)在線問診題目及答案
- 清大工程熱力學(xué)課件13課程總結(jié)
- 眼科護(hù)理培訓(xùn)課件
- 貿(mào)易咨詢服務(wù)合同協(xié)議
- 監(jiān)控系統(tǒng)培訓(xùn)資料
- 給排水系統(tǒng)設(shè)施維護(hù)與保養(yǎng)標(biāo)準(zhǔn)流程
- 施工現(xiàn)場常見的安全隱患排查及試題與答案
- GA/T 2161-2024法庭科學(xué)非法集資類案件資金數(shù)據(jù)分析規(guī)程
- 食管癌病例分析 手術(shù)、化療與放療方案優(yōu)化
- 銀行安全培訓(xùn)課件
- 2025年我國工程機(jī)械出口東南亞市場現(xiàn)狀分析
- 濟(jì)鋼人文考試試題及答案
- 安裝費合同協(xié)議
- 瑜伽教培理論試題及答案
評論
0/150
提交評論