第三章 Matplotlib 資料可視化基礎
3.1掌握繪圖基礎文法與常用參數
3.1.1掌握pypot基礎文法
大部分的pyplot圖形繪制都遵循一個流程,使用這個流程可以完成大部分圖形的繪制。pyplot基本繪圖流程主要分為3個部分,如下所示。
- 建立畫布與建立子圖
- 添加畫布内容
- 儲存與顯示圖檔
#pyplot中的基礎繪圖文法
import numpy as np
import matplotlib.pyplot as plt
# %matlpotlib inline
data=np.arange(0,1.0,0.01)
plt.title('lines')#添加标題
plt.xlabel('x')#添加x軸的名稱
plt.ylabel('y')#添加y軸的名稱
plt.xlim((0,1))#确定x軸的範圍
plt.ylim((0,1))#确定y軸的範圍
plt.xticks([0,0.2,0.4,0.6,0.8,1])#規定x軸刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])#規定y軸刻度
plt.plot(data,data**2)#添加y=x^2曲線
plt.plot(data,data**4)#添加y=x^4曲線
plt.legend(['y=x^2','y=x^4'])
plt.savefig('./tmp/y=x^2.png')
plt.show()
#包含子圖繪制的基礎文法
import numpy as np
rad=np.arange(0,np.pi*2,0.01)
#第一幅子圖
pl=plt.figure(figsize=(8,6),dpi=80)#确定畫布的大小
ax1=pl.add_subplot(2,1,1)#建立一個2行1列的子圖,并開始繪制第一幅
plt.title('lines')#添加标題
plt.xlabel('x')#添加x軸的名稱
plt.ylabel('y')#添加y軸的名稱
plt.xlim((0,1))#确定x軸的範圍
plt.ylim((0,1))#确定y軸的範圍
plt.xticks([0,0.2,0.4,0.6,0.8,1])#規定x軸的刻度
plt.yticks([0,0.2,0.4,0.6,0.8,1])#規定y軸的刻度
plt.plot(rad,rad**2)#添加y=x^2曲線
plt.plot(rad,rad**4)#添加y=x^4曲線
plt.legend(['y=x^2','y=x^4'])
#第二幅子圖
ax2=pl.add_subplot(2,1,2)
plt.title('sin/cos')#添加标題
plt.xlabel('rad')#添加x軸的名稱
plt.ylabel('value')#添加y軸的名稱
plt.xlim((0,np.pi*2))#确定x軸的範圍
plt.ylim((-1,1))#确定y軸的範圍
plt.xticks([0,np.pi/2,np.pi,np.pi*1.5,np.pi*2])#規定x軸的刻度
plt.yticks([-1,-0.5,0,0.5,1])#規定y軸的刻度
plt.plot(rad,np.sin(rad))#添加y=x^2曲線
plt.plot(rad,np.cos(rad))#添加y=x^4曲線
plt.legend(['sin','cos'])
plt.savefig('./tmp/sincos.png')
plt.show()
3.1.2設定pyplot的動态rc參數
#調節線條的rc參數
#原圖
x=np.linspace(0,4*np.pi)#生成x軸的資料
y=np.sin(x)#生成y軸資料
plt.plot(x,y,label="$sin(x)$")#繪制sin曲線圖
plt.title('sin')
plt.savefig('./tmp/預設sin曲線.png')
plt.show()
#修改rc參數後的圖
plt.rcParams['lines.linestyle']='-.'#設定線條樣式
plt.rcParams['lines.linewidth']=3 #設定線條寬度
plt.plot(x,y,label="$sin(x)$")#繪制三角函數
plt.title('sin')
plt.savefig('./tmp/修改rc參數後sin曲線.png')
plt.show()
#調節字型的rc參數
#無法顯示中文标題
plt.plot(x,y,label="$sin(x)$")#繪制三角函數
plt.title('sin曲線')
plt.savefig('./tmp/無法顯示中文标題sin曲線.png')
plt.show()
#設定rc參數顯示中文标題
#設定字型為SimHei顯示中文
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False#設定正常顯示符合
plt.plot(x,y,label="$sin(x)$")#繪制三角函數
plt.title('sin曲線')
plt.savefig('./tmp/顯示中文标題sin曲線.png')
plt.show()
任務3.2 分析特征間的關系
3.2.1繪制散點圖
#繪制2000-2017年各季度國民生產毛額散點圖
import numpy as np
# %matplotlib inline(不加這行,圖檔不顯示)
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']='SimHei'#設定中文顯示
plt.rcParams['axes.unicode_minus']=False #設定正常顯示符合
data=np.load('C:/Users/ljy15/Python資料分析與應用/Python資料分析與應用資料/第3章/任務程式/data/國民經濟核算季度資料.npz',allow_pickle=True)
name=data['columns']#提取其中的columns數組,視為資料的标簽
values=data['values']#提取其中的values數組,視為資料的存在位置
plt.figure(figsize=(8,7))#設定畫布
plt.scatter(values[:,0],values[:,2],marker='o')#繪制散點圖
plt.xlabel('年份')
plt.ylabel('生産總值(億元)')
plt.ylim((0,225000))#确定y軸的範圍
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)#規定x軸的刻度
plt.title('2000-2017年度各季度國民生產毛額散點圖')#添加圖表标題
plt.savefig('./tmp/2000-2017年度各季度國民生產毛額散點圖.png')
plt.show()
#繪制2000-2017年間各産業各季度國民生產毛額的散點圖
plt.figure(figsize=(8,7))#設定畫布
#繪制散點圖1
plt.scatter(values[:,0],values[:,3],marker='o',c='red')
#繪制散點圖2
plt.scatter(values[:,0],values[:,4],marker='D',c='blue')
#繪制散點圖3
plt.scatter(values[:,0],values[:,5],marker='v',c='red')
plt.xlabel('年份')#添加橫軸便簽
plt.ylabel('生産總值(億元)')#添加縱軸标簽
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title('2000-2017年各産業各季度國民生產毛額散點圖')#添加圖表标題
plt.legend(['第一産業','第二産業','第三産業'])#添加圖例
plt.savefig('./tmp/2000-2017年各産業季度國民生產毛額散點圖.png')
plt.show()
3.2.2繪制折線圖
#繪制2000-2017年各季度國民生產毛額折線圖
plt.figure(figsize=(8,7))#設定畫布
plt.plot(values[:,0],values[:,2],color='r',linestyle='--')
plt.xlabel('年份')#添加橫軸标簽
plt.ylabel('生産總值(億元)')#添加縱軸标簽
plt.ylim((0,225000))
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title('2000-2017年各季度國民生產毛額折線圖')#添加圖表标題
plt.savefig('./tmp/2000-2017年各季度國民生產毛額折線圖.png')
plt.show()
#繪制點線圖
plt.figure(figsize=(8,7))#設定畫布
plt.plot(values[:,0],values[:,2],color='r',linestyle='--',marker='o')
plt.xlabel('年份')#添加橫軸标簽
plt.ylabel('生産總值(億元)')#添加縱軸标簽
plt.ylim((0,225000))
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title('2000-2017年各季度國民生產毛額折線圖')#添加圖表标題
plt.savefig('./tmp/2000-2017年各季度國民生產毛額折線圖.png')
plt.show()
#plot函數可以一次接收多組資料,添加多條折線圖
plt.figure(figsize=(8,7))#設定畫布
plt.plot(values[:,0],values[:,3],'bs-',
values[:,0],values[:,4],'ro-',values[:,0],values[:,5],'gH--' )
plt.xlabel('年份')#添加橫軸标簽
plt.ylabel('生産總值(億元)')#添加縱軸标簽
plt.ylim((0,225000))
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.title('2000-2017年各季度國民生產毛額折線圖')#添加圖表标題
plt.legend(['第一産業','第二産業','第三産業'])#添加圖例
plt.savefig('./tmp/2000-2017年各産業各季度國民生產毛額折線散點圖.png')
plt.show()
3.2.3任務實作
1、繪制2000-2017各産業與行業的國民生產毛額散點圖
#繪制2000-2017年各産業與行業的國民生產毛額散點圖
import numpy as np
# %matplotlib inline(不加這行,圖檔不顯示)
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']='SimHei'#設定中文顯示
plt.rcParams['axes.unicode_minus']=False #設定正常顯示符合
data=np.load('C:/Users/ljy15/Python資料分析與應用/Python資料分析與應用資料/第3章/任務程式/data/國民經濟核算季度資料.npz',allow_pickle=True)
name=data['columns']#提取其中的columns數組,視為資料的标簽
values=data['values']#提取其中的values數組,視為資料的存在位置
p=plt.figure(figsize=(12,12))#設定畫布
#子圖1
ax1=p.add_subplot(2,1,1)
plt.scatter(values[:,0],values[:,3],marker='o',c='r')#繪制散點圖
plt.scatter(values[:,0],values[:,4],marker='D',c='b')#繪制散點圖
plt.scatter(values[:,0],values[:,5],marker='v',c='y')#繪制散點圖
plt.ylabel('生産總值(億元)')
plt.title('2000-2017年各産業與行業各季度國民生產毛額散點圖')
plt.legend(['第一産業','第二産業','第三産業'])#添加圖例
#子圖2
ax2=p.add_subplot(2,1,2)
plt.scatter(values[:,0],values[:,6],marker='o',c='r')#繪制散點圖
plt.scatter(values[:,0],values[:,7],marker='D',c='b')#繪制散點圖
plt.scatter(values[:,0],values[:,8],marker='v',c='y')#繪制散點圖
plt.scatter(values[:,0],values[:,9],marker='8',c='g')#繪制散點圖
plt.scatter(values[:,0],values[:,10],marker='p',c='c')#繪制散點圖
plt.scatter(values[:,0],values[:,11],marker='+',c='m')#繪制散點圖
plt.scatter(values[:,0],values[:,12],marker='s',c='k')#繪制散點圖
plt.scatter(values[:,0],values[:,13],marker='*',c='purple')#繪制散點圖
plt.scatter(values[:,0],values[:,14],marker='d',c='brown')#繪制散點圖
plt.legend(['農業','工業','建築','批發','交通','餐飲','金融','房地産','其他'])
plt.xlabel('年份')
plt.ylabel('生産總值(億元)')
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.savefig('./tmp/2000-2017年各産業與行業各季度國民生產毛額散點圖.png')
plt.show()
2、繪制2000-2017年各産業與行業的國民生產毛額折線圖
p1=plt.figure(figsize=(8,7))#設定畫布
#子圖1
ax3=p1.add_subplot(2,1,1)
plt.plot(values[:,0],values[:,3],'b-',
values[:,0],values[:,4],'r-',values[:,0],values[:,5],'g--' )
plt.ylabel('生産總值(億元)')#添加縱軸标簽
plt.title('2000-2017年各産業與行業各季度國民生產毛額折線圖')
plt.legend(['第一産業','第二産業','第三産業'])#添加圖例
#子圖2
ax4=p1.add_subplot(2,1,2)
plt.plot(values[:,0],values[:,6],'r-',
values[:,0],values[:,7],'b-',values[:,0],values[:,8],'y--',values[:,0],values[:,9],'g:',
values[:,0],values[:,10],'c-',values[:,0],values[:,11],'m-',values[:,0],values[:,12],'k--',
values[:,0],values[:,13],'r:',values[:,0],values[:,14],'b-' )
plt.legend(['農業','工業','建築','批發','交通','餐飲','金融','房地産','其他'])
plt.xlabel('年份')
plt.ylabel('生産總值(億元)')
plt.xticks(range(0,70,4),values[range(0,70,4),1],rotation=45)
plt.savefig('./tmp/2000-2017年各産業與行業各季度國民生產毛額折線子圖.png')
plt.show()
任務3.3 分析特征内部資料分布與分散狀況
3.3.1 繪制直方圖
#繪制2017年第一季度各産業國民生產毛額直方圖
import numpy as np
# %matplotlib inline(不加這行,圖檔不顯示)
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']='SimHei'#設定中文顯示
plt.rcParams['axes.unicode_minus']=False #設定正常顯示符合
data=np.load('C:/Users/ljy15/Python資料分析與應用/Python資料分析與應用資料/第3章/任務程式/data/國民經濟核算季度資料.npz',allow_pickle=True)
label=['第一産業','第二産業','第三産業']#刻度标簽
plt.figure(figsize=(8,7))#設定畫布
plt.bar(range(3),values[-1,3:6],width=0.5)#繪制直方圖
plt.xlabel('年份')
plt.ylabel('生産總值(億元)')
plt.xticks(range(3),label)
plt.title('2000-2017年第一季度各産業與行業各季度國民生產毛額直方圖')
plt.savefig('./tmp/2000-2017年各産業與行業各季度國民生產毛額直方圖.png')
plt.show()
3.3.2 繪制餅圖
#繪制2017年第一季度各産業國民生產毛額餅圖
plt.figure(figsize=(6,6))#設定畫布
label=['第一産業','第二産業','第三産業']#定義餅圖的标簽,标簽是清單
explode=[0.01,0.01,0.01]#設定各項距離圓心n個半徑
plt.pie(values[-1,3:6],explode=explode,labels=label,autopct='%1.lf%%')#繪制餅圖
plt.title('2017年第一季度各産業國民生產毛額餅圖')
plt.savefig('./tmp/2017年第一季度各産業生産總值占比餅圖.png')
plt.show()
3.3.3 繪制箱線圖
#繪制2000-2017年各産業國民生產毛額箱線圖
label=['第一産業','第二産業','第三産業']
gdp=(list(values[:,3]),list(values[:,4]),list(values[:,5]))
plt.figure(figsize=(6,4))#設定畫布
plt.boxplot(gdp,notch=True,labels=label,meanline=True)
plt.title('2000-2017年各産業國民生產毛額箱線圖')
plt.savefig('./tmp/2017年第一季度各産業生産總值箱線圖.png')
plt.show()
3.3.4任務實作
1、繪制國民生產毛額構成分布直方圖
#繪制國民生產毛額構成分布直方圖
import numpy as np
# %matplotlib inline
import matplotlib.pyplot as plt
data=np.load('C:/Users/ljy15/Python資料分析與應用/Python資料分析與應用資料/第3章/任務程式/data/國民經濟核算季度資料.npz',allow_pickle=True)
name=data['columns']#提取其中的columns數組,視為資料的标簽
values=data['values']#提取其中的values數組,視為資料的存在位置
plt.rcParams['font.sans-serif']='SimHei'#設定中文顯示
plt.rcParams['axes.unicode_minus']=False #設定正常顯示符合
label1=['第一産業','第二産業','第三産業']
label2=['農業','工業','建築','批發','交通','餐飲','金融','房地産','其他']
p=plt.figure(figsize=(12,12))#設定畫布
#子圖1
ax1=p.add_subplot(2,2,1)
plt.bar(range(3),values[0,3:6],width=0.5)#繪制直方圖
plt.xlabel('産業')
plt.ylabel('生産總值(億元)')
plt.xticks(range(3),label1)
plt.title('2000-2017年第一季度國民生產毛額産業構成分布直方圖')
#子圖2
ax2=p.add_subplot(2,2,2)
plt.bar(range(3),values[-1,3:6],width=0.5)#繪制直方圖
plt.xlabel('産業')
plt.ylabel('生産總值(億元)')
plt.xticks(range(3),label1)
plt.title('2017年第一季度國民生產毛額産業構成分布直方圖')
#子圖3
ax3=p.add_subplot(2,2,3)
plt.bar(range(9),values[0,6:],width=0.5)#繪制直方圖
plt.xlabel('行業')
plt.ylabel('生産總值(億元)')
plt.xticks(range(9),label2)
plt.title('2000年第一季度國民生產毛額行業構成分布直方圖')
#子圖4
ax4=p.add_subplot(2,2,4)
plt.bar(range(9),values[-1,6:],width=0.5)#繪制直方圖
plt.xlabel('行業')
plt.ylabel('生産總值(億元)')
plt.xticks(range(9),label2)
plt.title('2000年第一季度國民生產毛額行業構成分布直方圖')
plt.savefig('./tmp/國民生產毛額構成分布直方圖.png')
plt.show()
2、繪制國民生產毛額構成分布餅圖
#繪制國民生產毛額構成分布餅圖
label1=['第一産業','第二産業','第三産業']
label2=['農業','工業','建築','批發','交通','餐飲','金融','房地産','其他']
explode1=[0.01,0.01,0.01]
explode2=[0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01]
p=plt.figure(figsize=(12,12))#設定畫布
#子圖1
ax1=p.add_subplot(2,2,1)
plt.pie(values[0,3:6],explode=explode1,labels=label1,autopct='%1.lf%%')#繪制餅圖
plt.title('2000年第一季度國民生產毛額産業構成分布餅圖')
#子圖2
ax2=p.add_subplot(2,2,2)
plt.pie(values[-1,3:6],explode=explode1,labels=label1,autopct='%1.lf%%')#繪制餅圖
plt.title('2017年第一季度國民生產毛額産業構成分布餅圖')
#子圖3
ax1=p.add_subplot(2,2,3)
plt.pie(values[0,6:],explode=explode2,labels=label2,autopct='%1.lf%%')#繪制餅圖
plt.title('2000年第一季度國民生產毛額行業構成分布餅圖')
#子圖4
ax1=p.add_subplot(2,2,4)
plt.pie(values[-1,6:],explode=explode2,labels=label2,autopct='%1.lf%%')#繪制餅圖
plt.title('2017年第一季度國民生產毛額行業構成分布餅圖')
plt.savefig('./tmp/國民生產毛額構成分布餅圖.png')
plt.show()
3、繪制國民生產毛額分散情況箱線圖
label1=['第一産業','第二産業','第三産業']
label2=['農業','工業','建築','批發','交通','餐飲','金融','房地産','其他']
gdp1=(list(values[:,3]),list(values[:,4]),list(values[:,5]))
gdp2=([list(values[:,i])for i in range(6,15)])
p=plt.figure(figsize=(8,8))#設定畫布
#子圖1
ax1=p.add_subplot(2,2,1)
plt.boxplot(gdp1,notch=True,labels=label1,meanline=True)
plt.title('2000-2017年各産業國民生產毛額箱線圖')
plt.ylabel('生産總值(億元)')
#子圖2
ax2=p.add_subplot(2,2,2)
plt.boxplot(gdp2,notch=True,labels=label2,meanline=True)
plt.title('2000-2017年各行業國民生產毛額箱線圖')
plt.xlabel('行業')
plt.ylabel('生産總值(億元)')
plt.savefig('./tmp/國民生產毛額分散情況箱線圖.png')
plt.show()
實訓
實訓1 分析1996年-2015年人口資料特征間的關系
1、使用Numpy庫讀取人口資料
import numpy as np
# %matplotlib inline
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']='SimHei'#設定中文顯示
plt.rcParams['axes.unicode_minus']=False #設定正常顯示符合
data=np.load('C:/Users/ljy15/Python資料分析與應用/Python資料分析與應用資料/第3章/實訓資料/populations.npz',allow_pickle=True)
print(data.files)#檢視data裡面的屬性
values=data['data']
print(values)
name=data['feature_names']
print(name)
array=np.delete(data['data'],-1,0)#np.delete(array,obj,axis),obj代表第幾列或第幾行,axis=1代表按列删除,axis=0代表按行删
print(array)
array_1=np.delete(array,-1,0)
print(array_1)
array_1 = np.array(array_1)
2、建立畫布,并添加子圖
import numpy as np
# %matplotlib inline
import matplotlib.pyplot as plt
p=plt.figure(figsize=(8,7))#設定畫布
#子圖1
ax1=p.add_subplot(2,1,1)
plt.scatter(array_1[:,0],array_1[:,1],marker='o',c='r')#繪制散點圖
plt.scatter(array_1[:,0],array_1[:,2],marker='D',c='b')#繪制散點圖
plt.scatter(array_1[:,0],array_1[:,3],marker='v',c='y')#繪制散點圖
plt.ylabel('人口總數(萬人)')
plt.title('1996-2015年總人口、男性人口與女性人口随時間變化散點圖')
plt.legend(['年末總人口','男性人口','女性人口'])#添加圖例
#子圖2
ax2=p.add_subplot(2,1,2)
plt.plot(array_1[:,0],array_1[:,4],'b-',
array_1[:,0],array_1[:,5],'r-' )
plt.ylabel('人口總數(萬人)')#添加縱軸标簽
plt.title('1996-2015年城鎮人口、鄉村人口随時間變化折線圖')
plt.legend(['城鎮人口','鄉村人口'])#添加圖例
plt.savefig('./tmp/人口資料特征間的關系.png')
plt.show()
實訓2 分析1996-2015年人口資料各個特征的分布和分散情況
#繪制2015年人口資料各個特征人口分布直方圖
label1=['年末總人口','男性人口','女性人口']
label2=['城鎮人口','鄉村人口']
p=plt.figure(figsize=(12,12))#設定畫布
#子圖1
ax1=p.add_subplot(2,2,1)
plt.bar(range(3),array_1[0,1:4],width=0.5)#繪制直方圖
plt.xlabel('性别')
plt.ylabel('人口總數(萬人)')
plt.xticks(range(3),label1)
plt.title('2015年人口數量性别特征構成分布直方圖')
#子圖2
ax2=p.add_subplot(2,2,2)
plt.bar(range(3),array_1[-1,1:4],width=0.5)#繪制直方圖
plt.xlabel('性别')
plt.ylabel('人口數量(萬人)')
plt.xticks(range(3),label1)
plt.title('1996年人口數量性别特征構成分布直方圖')
#子圖3
ax3=p.add_subplot(2,2,3)
plt.bar(range(2),array_1[0,4:],width=0.5)#繪制直方圖
plt.xlabel('地區')
plt.ylabel('人口數量(萬人)')
plt.xticks(range(2),label2)
plt.title('2015年人口數量地區特征構成分布直方圖')
#子圖4
ax4=p.add_subplot(2,2,4)
plt.bar(range(2),array_1[-1,4:],width=0.5)#繪制直方圖
plt.xlabel('地區')
plt.ylabel('人口數量(萬人)')
plt.xticks(range(2),label2)
plt.title('1996年人口數量地區特征構成分布直方圖')
plt.savefig('./tmp/人口數量特征構成分布直方圖.png')
plt.show()
#繪制人口資料各個特征人口分布餅圖
label1=['年末總人口','男性人口','女性人口']
label2=['城鎮人口','鄉村人口']
explode1=[0.01,0.01,0.01]
explode2=[0.01,0.01]
p=plt.figure(figsize=(12,12))#設定畫布
#子圖1
ax1=p.add_subplot(2,2,1)
print(array_1[0,1:4])
plt.pie(array_1[0,1:4],explode=explode1,labels=label1,autopct='%1.lf%%')#繪制餅圖
plt.title('2015年人口資料性别構成分布餅圖')
#子圖2
ax2=p.add_subplot(2,2,2)
plt.pie(array_1[-1,1:4],explode=explode1,labels=label1,autopct='%1.lf%%')#繪制餅圖
plt.title('1996年人口資料性别構成分布餅圖')
#子圖3
ax1=p.add_subplot(2,2,3)
print(array_1[0,4:])
plt.pie(array_1[0,4:],explode=explode2,labels=label2,autopct='%1.lf%%')#繪制餅圖
plt.title('2015年人口資料地區構成分布餅圖')
#子圖4
ax1=p.add_subplot(2,2,4)
plt.pie(array_1[-1,4:],explode=explode2,labels=label2,autopct='%1.lf%%')#繪制餅圖
plt.title('2015年人口資料地區構成分布餅圖')
plt.savefig('./tmp/人口資料構成分布餅圖.png')
plt.show()
#繪制人口資料各個特征人口線箱圖
label1=['年末總人口','男性人口','女性人口']
label2=['城鎮人口','鄉村人口']
gdp1=(list(array_1[:,1]),list(array_1[:,2]),list(array_1[:,3]))
gdp2=([list(array_1[:,i])for i in range(4,6)])
p=plt.figure(figsize=(8,8))#設定畫布
#子圖1
ax1=p.add_subplot(2,2,1)
plt.boxplot(gdp1,notch=True,labels=label1,meanline=True)
plt.title('1996-2015年各性别人口數量總值箱線圖')
plt.ylabel('人口數量(萬人)')
#子圖2
ax2=p.add_subplot(2,2,2)
plt.boxplot(gdp2,notch=True,labels=label2,meanline=True)
plt.title('1996-2015年各地區人口數量總值箱線圖')
plt.xlabel('地區')
plt.ylabel('人口數量(萬人)')
plt.savefig('./tmp/人口數量分散情況箱線圖.png')
plt.show()