一、认识单子图
import matplotlib.pyplot as plt
import numpy as np
import pandas as pdplt.figure(num='单子图', figsize=(12, 8), facecolor='w')
# 中文字体
plt.rcParams['font.sans-serif'] = 'KaiTi'
# 负号显示
plt.rcParams['axes.unicode_minus'] = False# 2行,1列,第1个区域
plt.subplot(211)
x = np.arange(5)
y = np.array([1, 3, 5, 4, 8])
# 折线图
plt.plot(x, y, 'r--D', ms=5, mfc='r', mec='k')plt.title("折线图", fontsize='20')
plt.ylabel("温度", fontsize='14')
plt.xticks(x, ['1月', '2月', '3月', '4月', '5月'])
# 添加数据标签
for a, b in zip(x, y):plt.text(a, b+0.5, '%d' % b, ha='center', va='center')
plt.legend(['茂名市', ])bar_width=0.3
plt.subplot(212)
# 柱形图
plt.bar(x, y, width=bar_width)
plt.title("柱形图", fontsize='20')
plt.ylabel("温度",fontsize='14')
plt.xticks(x, ['1月', '2月', '3月', '4月', '5月'])
for a,b in zip(x,y):plt.text(a,b+0.1,'%d'%b,ha='center',fontsize=8)
plt.legend(['茂名市', ])# 自动调整适合布局
plt.tight_layout()
plt.show()

二、折线图和饼图
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import matplotlib.style as msplt.figure(num='子图', figsize=(12, 9), facecolor='w')
plt.rcParams['font.sans-serif'] = 'KaiTi'
plt.rcParams['axes.unicode_minus'] = Falsex = np.arange(1, 13)
# x=np.array([x for x in range(1,13)])y1 = np.array([20, 28, 23, 16, 29, 36, 39, 33, 31, 19, 21, 25])
y2 = np.array([17, 22, 39, 26, 35, 23, 25, 27, 29, 38, 20, 20])
labels = []
for i in range(1, 13):labels.append(str(i) + '月')ax1 = plt.subplot(211)
ax1.set_facecolor('w')
ax1.plot(x, y1, 'm--o', linewidth=2, ms=5)
ax1.plot(x, y2, 'g--*', lw=2, ms=5)ax1.set_title('产品A与产品B的销售额趋势', fontsize='20')
ax1.set_ylabel('销售额(亿元)', fontsize='16')
ax1.set_xticks(x, labels)
ax1.set_xlabel('月份', fontsize='16')for a,b in zip(x,y1):ax1.text(a,b+0.5,'%d' %b,ha='center')
for a,b in zip(x,y2):ax1.text(a,b+0.5,'%d' %b,ha='center')ax1.legend(['产品A', '产品B', ])# 下面的饼图
ax2 = plt.subplot(223)
# 饼图是逆时针画的,两个%%显示一个%
# labels:每一个饼图的标签
# autopct:饼内显示的百分比
# explode:每一个脱离圆心的值
# pctdistance:饼图内数据标签对圆心的距离,默认0.6
# shadow=True:给饼图给阴影
# labeldistance:标签对圆心的距离,默认 1.1
# startangle:从多少度逆时针去画图;startangle=90,从90度开始画,默认0度
# radius:饼图的半径大小,默认1.2
# wedgeprops:饼图变圆环(0.7),linewidth:边长大小,edgecolor:边的颜色
# textprops:调标签文本,fontsize:字体大小,fontfamily:字体样式,color:字体颜色
# frame=True:显示图框
ax2.pie(y1,radius=1.2,autopct='%3.1f%%', pctdistance = 0.7,wedgeprops={'width':0.7}, labels=labels)
ax2.set_title('产品A的销售额',y=1.05, pad=10)ax2 = plt.subplot(224)
ax2.pie(y2,radius=1.2,autopct='%3.1f%%', pctdistance = 0.7,wedgeprops={'width':0.7}, labels=labels)
ax2.set_title('产品B的销售额',y=1.05, pad=10)plt.tight_layout()
plt.show()

三、饼图和堆积图
import matplotlib.pyplot as plt
import numpy as np
import pandas as pdplt.figure(num='多子图', figsize=(12, 9), facecolor='w')
plt.rcParams['font.sans-serif'] = 'KaiTi'
plt.rcParams['axes.unicode_minus'] = Falsex = np.arange(1, 13)y1 = np.array([20, 28, 23, 16, 29, 36, 39, 33, 31, 19, 21, 25])
y2 = np.array([17, 22, 39, 26, 35, 23, 25, 27, 29, 38, 20, 20])
labels = []
for i in range(1, 13):labels.append(str(i) + '月')ax1 = plt.subplot(212)
# ax1.set_facecolor('grey')
# stack:堆积
ax1.stackplot(x,y1,y2)
ax1.set_ylim(0,80)ax1.set_title('产品A与产品B的销售额趋势', fontsize='20')
ax1.set_ylabel('销售额(亿元)', fontsize='16')
ax1.set_xticks(x, labels)
ax1.set_xlabel('月份', fontsize='16')
ax1.set_ylim(0,100)ax1.legend(['产品A', '产品B', ])ax2 = plt.subplot(221)
ax2.pie(y1,radius=1.2,autopct='%3.1f%%', pctdistance = 0.7,wedgeprops={'width':0.7}, labels=labels)
ax2.set_title('产品A的销售额',y=1.05, pad=10)ax2 = plt.subplot(222)
ax2.pie(y2,radius=1.2,autopct='%3.1f%%', pctdistance = 0.7,wedgeprops={'width':0.7}, labels=labels)
ax2.set_title('产品B的销售额',y=1.05, pad=10)plt.tight_layout()
plt.show()
