1. 程式人生 > >Matplotlib 子圖 subplot 畫餅圖、折線圖兩種方法

Matplotlib 子圖 subplot 畫餅圖、折線圖兩種方法

方法一:axs畫子圖

import seaborn as sns
import matplotlib
import matplotlib.pyplot as plt

sns.set_style("whitegrid")
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family']='sans-serif'

matplotlib.rcParams['axes.unicode_minus'] = False
matplotlib.fontsize='20'

#第一個方法生成兩個子圖,這裡axs是一個列表

fig, axs = plt.subplots(1, 2, figsize=(12,6), sharey=True)#一行兩列的子圖分佈

labels = list(t5.index)
sizes = list(t5['18年結構佔比'])
explode = (0.0,0.0,0.0, 0.0,0.2)  # only "explode" the 2nd slice (i.e. 'Hogs')


axs[0].pie(sizes, explode=explode, labels=labels, autopct='%1.2f%%',
        shadow=False, startangle=45,textprops={'fontsize': 18})
axs[0].set_title('18年1-3季度',fontsize='20')
axs[0].axis('equal')

labels = list(t5.index)
sizes = list(t5['17年結構佔比'])
explode = (0.0,0.0,0.0, 0.0,0.2)  # only "explode" the 2nd slice (i.e. 'Hogs')


axs[1].pie(sizes, explode=explode, labels=labels, autopct='%1.2f%%',
        shadow=False, startangle=45,textprops={'fontsize': 18})
axs[1].set_title('17年1-3季度',fontsize='20')
axs[1].axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.

plt.savefig('e:/tj/month/fx1809/渠道結構餅.png',dpi=600,bbox_inches = 'tight')  

plt.show()

 

axs效果

方法二:subplot畫子圖

import seaborn as sns
import matplotlib
import matplotlib.pyplot as plt

sns.set_style("whitegrid")
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['font.family']='sans-serif'
#解決負號'-'顯示為方塊的問題
matplotlib.rcParams['axes.unicode_minus'] = False
matplotlib.fontsize='20'

#plt.subplot(121)
fig, axs = plt.subplots(2, 1, figsize=(15,10), sharey=True)

x = range(len(ct.index))
y1 = ct['案均賠款(元)2018']
y2= ct['案均賠款(元)2017']

#使用subplot
plt.subplot(2,1,1) #兩行一列,第一個圖
plt.plot(x,y1,'r')
plt.plot(x,y2,'g')
plt.ylim(3000,12000)
plt.xlim(-0.5,6.5)
plt.xticks(x, ct.index,fontsize='15')
plt.ylabel('案均賠款(元)',fontsize='15')
plt.title('18年1-3季度部分主體案均賠款對比',fontsize='20')
plt.legend(['2018年','2017年'],fontsize='15')
for x,y,z  in zip(x,y1,y2):
        plt.text(x, y+5, str(int(y)), ha='left', va='bottom', fontsize=15,rotation=0,bbox=dict(facecolor='red', alpha=0.2))
        plt.text(x, z+5, str(int(z)), ha='right', va='bottom', fontsize=15,rotation=0,bbox=dict(facecolor='g', alpha=0.2))
       


x = range(len(ct.index))
y1 = ct['車均保費(元)2018']
y2= ct['車均保費(元)2017']

#兩行一列的第二個圖
plt.subplot(2,1,2)
plt.plot(x,y1,'r')
plt.plot(x,y2,'g')
plt.ylim(1000,3000)
plt.xlim(-0.5,6.5)
plt.xticks(x, ct.index,fontsize='15')
plt.ylabel('車均保費(元)',fontsize='15')
plt.title('18年1-3季度部分主體車均保費對比',fontsize='20')
plt.legend(['2018年','2017年'],fontsize='15')
for x,y,z  in zip(x,y1,y2):
        plt.text(x, y+5, str(int(y)), ha='left', va='top', fontsize=15,rotation=0,bbox=dict(facecolor='red', alpha=0.2))
        plt.text(x, z+5, str(int(z)), ha='right', va='bottom', fontsize=15,rotation=0,bbox=dict(facecolor='g', alpha=0.2))
       

plt.savefig('e:/tj/month/fx1809/車均案均.png',dpi=600,bbox_inches = 'tight')
plt.show()

subplot效果