一.导入模块
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
二.画布参数
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False
plt.rcParams['axes.facecolor']='#FFFFCC'
plt.rcParams['axes.edgecolor']='pink'
plt.rcParams['xtick.color']='black'
plt.rcParams['ytick.color']='black'
font={
'family':'SimHei',
'weight':'normal',
'size':20,
'color':'black'
}
三.读取文件
w_file=np.load(r'E:\pythonwork\数据分析\5\populations.npz',allow_pickle=True)
arr1=w_file['data.npy']
arr2=w_file['feature_names.npy']
arr_2=arr2[1:]
arr4=arr1[:-2,:][::-1]
1.创建画布
plt.figure(figsize=(18,16),facecolor='#FFFF99')
gs=GridSpec(2,2)
2.坐标轴
x=np.arange(1,2*len(arr4)+1,2)
x2=x+1
x1=arr4[:,0]
y1=arr4[:,1]
y2=arr4[:,2]
y3=arr4[:,3]
y4=arr4[:,4]
y5=arr4[:,5]
3.画图
3.1折线图
plt.subplot(gs[0,:])
plt.xlabel('年份',fontdict=font,loc='right')
plt.ylabel('人数',fontdict=font,loc='top')
plt.title('1996-2015人口统计',fontdict=font)
plt.plot(x1,y1,c='y',
marker='>',
markerfacecolor='yellow',
markersize=10,
)
plt.plot(x1,y2,c='orange',
marker='<',
markerfacecolor='orange',
markersize=10,
)
plt.plot(x1,y3,c='r',
marker='o',
markerfacecolor='red',
markersize=10,
)
plt.plot(x1,y4,c='g',
marker='^',
markerfacecolor='green',
markersize=10,
)
plt.plot(x1,y5,c='b',
marker='*',
markerfacecolor='blue',
markersize=10,
)
a=plt.legend(arr_2,facecolor='#CCFFFF')
3.2柱状图
plt.subplot(gs[1,0])
plt.title('柱状图1',fontdict=font)
x1=[1,4,6]
y1=[1000,300,600]
x2=[2,5]
y2=[800,100]
plt.xticks([1.5,4.5],['男','女'],rotation=45)
plt.xlabel('x轴',fontdict=font,loc='right')
plt.ylabel('y轴',fontdict=font,loc='top')
plt.bar(x1,y1,color='#FFCCCC',width=0.5,edgecolor=['#FFCCCC','pink'],linewidth=[2,1,3])
plt.bar(x2,y2,color='#CCCCCC',width=0.5)
x1.extend(x2)
y1.extend(y2)
for x,y in zip(x1,y1):
plt.text(x,y+2,y,
fontdict=font,
ha='center',
va='center',
bbox={
'facecolor':'#CCFFFF',
'alpha':0.8,
'edgecolor':'#CCFFFF'
})
plt.legend(['2019','2020'],facecolor='#CCFFFF')
3.3直方图
plt.subplot(gs[1,1])
plt.title('直方图',fontdict=font)
x=np.random.randn(10000)
plt.xlabel('x轴',fontdict=font,loc='right')
plt.ylabel('人数',fontdict=font,loc='top')
bins=[-0.01,0.2,0.4,0.6,0.8,1.01]
plt.hist(x,bins=bins,log=False,color='#FFCCCC',rwidth=1)
plt.show()

3.4饼图
plt.title('饼图',fontdict=font)
x=[100,200,300]
labels=['A','B','C']
labels1=['D','E','F']
color=['#FFFFCC','#CCFFFF','#FFCCCC']
color1=['#99CCFF','#CCFF99','#CCCCCC']
patches,l_text,p_text =\
plt.pie(x,
colors=color,
explode=[0.02,0.01,0.01],
labels=labels,
autopct='%1.1f%%',
shadow=True,
center=(0,0),
pctdistance=0.5,
startangle=90,
labeldistance=0.8,
)
for t in p_text:
t.set_size(50)
for t in l_text:
t.set_size(50)
plt.axis('equal')
plt.legend()
patches,l_text,p_text =\
plt.pie(x,
colors=color1,
explode=[0.02,0.01,0.01],
labels=labels1,
autopct='%3.1f%%',
shadow=True,
center=(1,1),
pctdistance=0.5,
startangle=-45,
labeldistance=0.8,
)
for t in p_text:
t.set_size(50)
for t in l_text:
t.set_size(50)
plt.axis('equal')
plt.legend()
plt.show()

3.5雷达图
plt.title('雷达图',fontdict=font)
x=np.linspace(0,2*np.pi,3,endpoint=False)
x_concat=np.concatenate((x,[x[0]]))
y=[2,1,3,2]
plt.polar(x_concat,y,marker='s')
plt.xticks(x,['x','y','z'])
plt.fill(x_concat,y,'hotpink',alpha=0.6)
plt.show()
