matplotlib 均值_干货|教你一文掌握:Matplotlib+Seaborn可视化
轉(zhuǎn)自:Python數(shù)據(jù)分析實(shí)戰(zhàn)與AI干貨
導(dǎo)語(yǔ)
Seaborn和Matplotlib是Python最強(qiáng)大的兩個(gè)可視化庫(kù)。Seaborn其默認(rèn)主題讓人驚訝,而Matplotlib可以通過(guò)其多個(gè)分類為用戶打造專屬功能。
01導(dǎo)入包102參數(shù)介紹Figure:面板(圖),matplotlib中的所有圖像都是位于figure對(duì)象中,一個(gè)圖像只能有一個(gè)figure對(duì)象。
Subplot:子圖,figure對(duì)象下創(chuàng)建一個(gè)或多個(gè)subplot對(duì)象(即axes)用于繪制圖像。
font: 字體集(font family)、字體大小和樣式設(shè)置line: 設(shè)置線條(顏色、線型、寬度等)和標(biāo)記。
xticks和yticks: 為x,y軸的主刻度和次刻度設(shè)置顏色、大小、方向,以及標(biāo)簽大小。
03點(diǎn)圖、線圖為例 1#使用numpy產(chǎn)生數(shù)據(jù)2x=np.arange(-5,5,0.1)
3y=x*3
4
5#創(chuàng)建窗口、子圖
6#方法1:先創(chuàng)建窗口,再創(chuàng)建子圖。(一定繪制)
7fig?=?plt.figure(num=1,?figsize=(15,?8),dpi=80)?????#開(kāi)啟一個(gè)窗口,同時(shí)設(shè)置大小,分辨率
8ax1?=?fig.add_subplot(2,1,1)??#通過(guò)fig添加子圖,參數(shù):行數(shù),列數(shù),第幾個(gè)。
9ax2?=?fig.add_subplot(2,1,2)??#通過(guò)fig添加子圖,參數(shù):行數(shù),列數(shù),第幾個(gè)。
10print(fig,ax1,ax2)
11#方法2:一次性創(chuàng)建窗口和多個(gè)子圖。(空白不繪制)
12fig,axarr?=?plt.subplots(4,1)??#開(kāi)一個(gè)新窗口,并添加4個(gè)子圖,返回子圖數(shù)組
13ax1?=?axarr[0]????#通過(guò)子圖數(shù)組獲取一個(gè)子圖
14print(fig,ax1)
15#方法3:一次性創(chuàng)建窗口和一個(gè)子圖。(空白不繪制)
16ax1?=?plt.subplot(1,1,1,facecolor='white')??????#開(kāi)一個(gè)新窗口,創(chuàng)建1個(gè)子圖。facecolor設(shè)置背景顏色
17print(ax1)
18#獲取對(duì)窗口的引用,適用于上面三種方法
19#?fig?=?plt.gcf()???#獲得當(dāng)前figure
20#?fig=ax1.figure???#獲得指定子圖所屬窗口
21
22# fig.subplots_adjust(left=0)?????????????????????????#設(shè)置窗口左內(nèi)邊距為0,即左邊留白為0。
23
24#設(shè)置子圖的基本元素
25ax1.set_title('python-drawing')????????????#設(shè)置圖體,plt.title
26ax1.set_xlabel('x-name')????????????????????#設(shè)置x軸名稱,plt.xlabel
27ax1.set_ylabel('y-name')????????????????????#設(shè)置y軸名稱,plt.ylabel
28plt.axis([-6,6,-10,10])??????????????????#設(shè)置橫縱坐標(biāo)軸范圍,這個(gè)在子圖中被分解為下面兩個(gè)函數(shù)
29ax1.set_xlim(-5,5)???????????????????????????#設(shè)置橫軸范圍,會(huì)覆蓋上面的橫坐標(biāo),plt.xlim
30ax1.set_ylim(-10,10)?????????????????????????#設(shè)置縱軸范圍,會(huì)覆蓋上面的縱坐標(biāo),plt.ylim
31
32xmajorLocator?=?MultipleLocator(2)???#定義橫向主刻度標(biāo)簽的刻度差為2的倍數(shù)。就是隔幾個(gè)刻度才顯示一個(gè)標(biāo)簽文本
33ymajorLocator?=?MultipleLocator(3)???#定義縱向主刻度標(biāo)簽的刻度差為3的倍數(shù)。就是隔幾個(gè)刻度才顯示一個(gè)標(biāo)簽文本
34
35ax1.xaxis.set_major_locator(xmajorLocator)?#x軸?應(yīng)用定義的橫向主刻度格式。如果不應(yīng)用將采用默認(rèn)刻度格式
36ax1.yaxis.set_major_locator(ymajorLocator)?#y軸?應(yīng)用定義的縱向主刻度格式。如果不應(yīng)用將采用默認(rèn)刻度格式
37
38ax1.xaxis.grid(True,?which='major')??????#x坐標(biāo)軸的網(wǎng)格使用定義的主刻度格式
39ax1.yaxis.grid(True,?which='major')??????#x坐標(biāo)軸的網(wǎng)格使用定義的主刻度格式
40
41ax1.set_xticks([])?????#去除坐標(biāo)軸刻度
42ax1.set_xticks((-5,-3,-1,1,3,5))??#設(shè)置坐標(biāo)軸刻度
43ax1.set_xticklabels(labels=['x1','x2','x3','x4','x5'],rotation=-30,fontsize='small')??#設(shè)置刻度的顯示文本,rotation旋轉(zhuǎn)角度,fontsize字體大小
44
45plot1=ax1.plot(x,y,marker='o',color='g',label='legend1')???#點(diǎn)圖:marker圖標(biāo)
46plot2=ax1.plot(x,y,linestyle='--',alpha=0.5,color='r',label='legend2')???#線圖:linestyle線性,alpha透明度,color顏色,label圖例文本
47
48ax1.legend(loc='upper?left')????????????#顯示圖例,plt.legend()
49ax1.text(2.8,?7,?r'y=3*x')????????????????#指定位置顯示文字,plt.text()
50ax1.annotate('important?point',?xy=(2,?6),?xytext=(3,?1.5),??#添加標(biāo)注,參數(shù):注釋文本、指向點(diǎn)、文字位置、箭頭屬性
51????????????arrowprops=dict(facecolor='black',?shrink=0.05),
52????????????)
53#顯示網(wǎng)格。which參數(shù)的值為major(只繪制大刻度)、minor(只繪制小刻度)、both,默認(rèn)值為major。axis為'x','y','both'
54ax1.grid(b=True,which='major',axis='both',alpha=?0.5,color='skyblue',linestyle='--',linewidth=2)
55
56axes1?=?plt.axes([.2,?.3,?.1,?.1],?facecolor='y')???????#在當(dāng)前窗口添加一個(gè)子圖,rect=[左,?下,?寬,?高],是使用的絕對(duì)布局,不和以存在窗口擠占空間
57axes1.plot(x,y)??#在子圖上畫(huà)圖
58plt.savefig('aa.jpg',dpi=400,bbox_inches='tight')???#savefig保存圖片,dpi分辨率,bbox_inches子圖周邊白色空間的大小
59plt.show()????#打開(kāi)窗口,對(duì)于方法1創(chuàng)建在窗口一定繪制,對(duì)于方法2方法3創(chuàng)建的窗口,若坐標(biāo)系全部空白,則不繪制
04一個(gè)窗口多個(gè)圖 1#一個(gè)窗口,多個(gè)圖,多條數(shù)據(jù)
2sub1=plt.subplot(211,facecolor=(0.1843,0.3098,0.3098))??#將窗口分成2行1列,在第1個(gè)作圖,并設(shè)置背景色
3sub2=plt.subplot(212)???#將窗口分成2行1列,在第2個(gè)作圖
4sub1.plot(x,y)??????????#繪制子圖
5sub2.plot(x,y)??????????#繪制子圖
6
7axes1?=?plt.axes([.2,?.3,?.1,?.1],?facecolor='y')??#添加一個(gè)子坐標(biāo)系,rect=[左,?下,?寬,?高]
8plt.plot(x,y)???????????#繪制子坐標(biāo)系,
9axes2?=?plt.axes([0.7,?.2,?.1,?.1],?facecolor='y')??#添加一個(gè)子坐標(biāo)系,rect=[左,?下,?寬,?高]
10plt.plot(x,y)
11plt.show()
05柱形圖 1plt.figure(3)
2x_index?=?np.arange(5)???#柱的索引
3x_data?=?('A',?'B',?'C',?'D',?'E')
4y1_data?=?(20,?35,?30,?35,?27)
5y2_data?=?(25,?32,?34,?20,?25)
6bar_width?=?0.35???#定義一個(gè)數(shù)字代表每個(gè)獨(dú)立柱的寬度
7
8rects1?=?plt.bar(x_index,?y1_data,?width=bar_width,alpha=0.4,?color='b',label='legend1')????????????#參數(shù):左偏移、高度、柱寬、透明度、顏色、圖例
9rects2?=?plt.bar(x_index?+?bar_width,?y2_data,?width=bar_width,alpha=0.5,color='r',label='legend2')?#參數(shù):左偏移、高度、柱寬、透明度、顏色、圖例
10#關(guān)于左偏移,不用關(guān)心每根柱的中心不中心,因?yàn)橹灰芽潭染€設(shè)置在柱的中間就可以了
11plt.xticks(x_index?+?bar_width/2,?x_data)???#x軸刻度線
12plt.legend()????#顯示圖例
13plt.tight_layout()??#自動(dòng)控制圖像外部邊緣,此方法不能夠很好的控制圖像間的間隔
14plt.show()
06直方圖1fig,(ax0,ax1)?=?plt.subplots(nrows=2,figsize=(9,6))?????#在窗口上添加2個(gè)子圖
2sigma?=?1???#標(biāo)準(zhǔn)差
3mean?=?0????#均值
4x=mean+sigma*np.random.randn(10000)???#正態(tài)分布隨機(jī)數(shù)
5ax0.hist(x,bins=40,normed=False,histtype='bar',facecolor='yellowgreen',alpha=0.75)???#normed是否歸一化,histtype直方圖類型,facecolor顏色,alpha透明度
6ax1.hist(x,bins=20,normed=1,histtype='bar',facecolor='pink',alpha=0.75,cumulative=True,rwidth=0.8)?#bins柱子的個(gè)數(shù),cumulative是否計(jì)算累加分布,rwidth柱子寬度
7plt.show()??#所有窗口運(yùn)行
07散點(diǎn)圖1fig?=?plt.figure(4)??????????#添加一個(gè)窗口
2ax?=fig.add_subplot(1,1,1)???#在窗口上添加一個(gè)子圖
3x=np.random.random(100)??????#產(chǎn)生隨機(jī)數(shù)組
4y=np.random.random(100)??????#產(chǎn)生隨機(jī)數(shù)組
5ax.scatter(x,y,s=x*1000,c='y',marker=(5,1),alpha=0.5,lw=2,facecolors='none')??#x橫坐標(biāo),y縱坐標(biāo),s圖像大小,c顏色,marker圖片,lw圖像邊框?qū)挾?br />6plt.show()??#所有窗口運(yùn)行
?
08導(dǎo)入Seaborn1import?seaborn?as?sns09直方圖barplot1x?=?np.arange(8)2y?=?np.array([1,5,3,6,2,4,5,6])
3df?=?pd.DataFrame({"x-axis":?x,"y-axis":?y})
4sns.barplot("x-axis","y-axis",palette="RdBu_r",data=df)
5plt.xticks(rotation=90)
6plt.show()
010相關(guān)熱力圖
以tips數(shù)據(jù)為例:
1#?相關(guān)性熱力圖2sns.heatmap(tips.corr())
#看圖說(shuō)話:熱力圖可用來(lái)顯示兩變量之間的相關(guān)性,在這里兩變量間對(duì)應(yīng)的矩形框的顏色越淺,代表兩者之間越具有相關(guān)性011核密度估計(jì)圖1#kde?plot圖
2sns.kdeplot(tips['total_bill'],?shade=True)
012總結(jié)
相信介紹到這里,大家對(duì)Matplotlib和Seaborn常用圖形有充分的了解了,下面通過(guò)一些案例去實(shí)踐可視化操作吧!我也會(huì)在后續(xù)實(shí)戰(zhàn)中帶來(lái)更多的應(yīng)用。
感謝閱讀推薦閱讀:
1:真實(shí)的上海IT圈:張江男vs漕河涇男
2:真實(shí)的北京IT圈:后廠村姑 vs 后廠村花?
3:為什么你的提問(wèn)沒(méi)人解答?
4:Python愛(ài)好者社區(qū)歷史文章合集
好看請(qǐng)點(diǎn)這里~總結(jié)
以上是生活随笔為你收集整理的matplotlib 均值_干货|教你一文掌握:Matplotlib+Seaborn可视化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: plsql如何连接oracle11g_P
- 下一篇: python 开放_Python