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