运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解

从导入数据开始

这里我们有一个现成的数据表包,现在我们所处环境是pycharm,安装环境是annaconda3环境,我们将通过这个数据表包来进行数据分析,运用matplotlib绘制折线图、散点图、饼图和柱形图
首先
运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解
然后我们要从这个表中找到我们需要的数据,通过debug展示我们想要的信息
运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解
在这里我们知道了这个表包有两个表:data、feature_names,然后我们现在需要提取这两个表中数据,并展示
运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解
这个表包是以键值对形式存入这两个表的,所以利用提取键值对值的方式来提取这两个表,然后print这两个表,再通过debug断点得到其中信息,右键并view as array,此时两个表的数据就展示出来了,方便我们下一步绘制图表的操作

绘制图标阶段

直接po代码

import matplotlib.pyplot as plt  #导包等操作就不赘述了
import numpy as np
datA = np.load(r'd:\Desktop\populations.npz')   #导入我们要绘制的表


date = datA['data']
feature_names  = datA['feature_names']
print(date)
print(feature_names)

#1、绘制男女人口趋势变换柱状图
p1 =plt.figure(figsize=(12,6))   #绘制一个12*6的表
p1.add_subplot(1,2,1)     #进行分图操作,生成一个位于 1行,2列,位于1列的表
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False      #这两步是转换文字类型为汉字型
label = date[:-2:,0]   #确定x轴的数据是取的哪一列  提取0列全部数据,且不选取后两行的数据,无步长时步长默认为':',选取全部的数据
plt.bar(range(20),date[:-2:,2],width = 0.5,color = ('blue'))#x/y轴数值取值,range是确定x轴的数点的范围,为19个点,data是具体取y轴的列数和范围
plt.xticks(range(20),label,rotation = 45)   #设置x轴图例,此处将x轴的数点替换为第二列的(变量label)选定的数,并倾斜45度
for x,y in zip(range(20),date[:-2:,2]):  #给每个柱形图的数据头加上数值
    plt.text(x,y+10,y,ha='center',fontsize = 10,rotation = 45)
plt.title('男性人口趋势')     #加表标题
p1.add_subplot(1,2,2)       #绘制分图的第二张表,确定位置
plt.bar(range(20),date[:-2:,3],width = 0.5,color = ('pink'))   #bar是绘制柱形图的函数
plt.xticks(range(20),label,rotation = 45)
for x,y in zip(range(20),date[:-2:,3]):
    plt.text(x,y+10,y,ha='center',fontsize = 10,rotation = 45)
plt.title('女性人口趋势')
plt.show()        #展示表

#=================绘制男女人口占比饼图===============
plt.figure()
lable = ['男','女']
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False
explode = [0.01,0.01]         #饼图分块间分割距离
men = sum(date[:-2:,2])       #得到男性人口数据
women = sum(date[:-2:,3])     #得到女性人口数据
size = [men,women]            #将我们需要的男女人口数据传进列表size中
plt.pie(size,explode=explode,labels = lable,colors=('r','green'),pctdistance=0.6,startangle=90)    #pie是绘制饼图函数
plt.axis("equal")     #盘一下让饼图更圆润
plt.legend('men','women')     #设置图例
plt.title('1996-2015男女总人口对比图')        #设置标题
plt.show()

#============分析我国人口结构变化情况以及变化速率的增减状况==============
plt.figure(figsize=(8,8))
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False
man = date[:-2:,2][::-1]      #选取男子人口的数据,此处需要从1995-2015的数据,所以要颠倒一下
women = date[:-2:,3][::-1]       #选取女子数据,理由同上
year = date[:-2:,0][::-1]     #选取年份数据,理由同上
plt.scatter(range(20),man)        #scatter函数是绘制散点图的函数,此处绘制男子的散点图
plt.scatter(range(20),women)      #绘制女子的散点图
plt.xticks(range(20),year,rotation = 45)      #更改图例
plt.title('本国人口结构变化趋势图')
plt.show()

#=====================绘制城乡人口趋势变化=======================
plt.figure(figsize=(8,8))
plt.rcParams['font.sans-serif']='SimHei'
plt.rcParams['axes.unicode_minus']=False
city = date[:-2:,4][::-1]
contryside = date[:-2:,5][::-1]
year = date[:-2:,0][::-1]
plt.plot(range(20), city)
plt.scatter(range(20), city)
plt.plot(range(20), contryside,color = 'r')
plt.scatter(range(20), contryside,color = 'r')
for i,j in zip(range(20),city):       #在图上标注数值的方法
    plt.text(i,j-3,j,va='center',fontsize=6)
for i,j in zip(range(20),contryside):
    plt.text(i,j-3,j,va='center',fontsize=6)
plt.xticks(range(20),year,rotation = 45)
plt.title('本国城乡人口趋势变化')
plt.show()

得到的图标样式如下

运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解
运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解
运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解
运用matplotlib绘制折线图、散点图、饼图、柱形图的定义代码以及案例详解

以上