本篇博文请在学习以下两篇博文之后再进行阅读(本文实际上是对以下两篇博文中所讲知识点的简单应用,并简单回顾以下知识点。)

matplotlib简单绘制不同类型的表格_wolfwalker的博客-CSDN博客_matplotlib 表格

matplotlib的简单使用(数据可视化)_wolfwalker的博客-CSDN博客

目录

任务1:绘制人口统计图

任务2:绘制经济统计图

第一种形式

第二种形式

第三种形式

第四种形式

第五种形式


任务1:绘制人口统计图

1.从 populations.npz 中读取数据

2.提取总人口、男性人口、女性人口、城镇人口、乡村人口等数据,绘制折线图

链接: https://pan.baidu.com/s/1CNlDRT9G8I_ewtoSpTBYAw 提取码: ra1j

简要来说,我们需要绘制如下的图表。

import numpy as np
import matplotlib.pyplot as plt
#为了能够使我们的matplotlib正常使用中文,我们需要写下面两行代码,当前博主测试的环境为mac,
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
#Windows的话需要使用以下两句代码
# plt.rcParams["font.family"] = ["sans-serif"]
# plt.rcParams["font.sans-serif"] = ['SimHei']#将我们的文件放到我们Python文件的同级目录下,然后使用我们下面的代码读取我们population.npz文件中的具体数据。,
data=np.load('populations.npz',allow_pickle=True)
#设置我们的画布大小为30,8,其大小的单位为英寸
fig=plt.figure(figsize=(30,8))
#在我们的画布上创建一行一列的一张图表(也就是整张画布上我们只创建一张图表。)
ax=fig.add_subplot(1,1,1)
#使用切片的代码,从我们已经读取到数据的data数据中获取数据到my_data中,但是我们的数据中最后两行的数据为NAN,只有前面的0-19行有数据,
#此时我们需要数据清洗,将我们最后两行的数据进行删除
my_data=data['data'][0:20,:]
#当然我们也可以使用data['colunms']来查看我们列表中的字段名称是什么#将我们第一条折线的数据从我们my_data的大数据表中读取出来,如果查看过我们的columns之后,我们知道我们所需要的第一组数据为my_data中的第2列(下标从0开始)的数据
data1=my_data[0:20,1]
#但是当我们查看具体的数据之后,我们发现数据的年份和我们需要的年份是相反的,所以我们需要将取出的数据表首尾倒转
data1=np.fliplr([data1])[0]
#给我们第一组数据用折线图绘制,其标签名为total
ax.plot(data1,label='total')#以下为第二条折线图的创建,其原理与第一张图类似
data2=my_data[0:20,2]
data2=np.fliplr([data2])[0]
ax.plot(data2,label='man')#第三张折线图
data3=my_data[0:20,3]
data3=np.fliplr([data3])[0]
ax.plot(data3,label='women')#第四张折线图
data4=my_data[0:20,4]
data4=np.fliplr([data4])[0]
ax.plot(data4,label='city')#第五章折线图
data5=my_data[0:20,5]
data5=np.fliplr([data5])[0]
ax.plot(data5,label='urban')#设置我们图标的xy轴范围
ax.set_ylim(36000,140000)
ax.set_xticks(np.arange(20))#在我们图标的特定位置打上箭头和注释
ax.annotate('total',xy=(6,128000),xytext=(5,120000),arrowprops=dict(facecolor='b', shrink=0.05))#在我们图标的最适合的位置放置我们的示例图
ax.legend(loc='best')#将我们的整张图标的标题命名为“人口统计图”)
ax.set_title('人口统计示例')#将我们横轴的标签全部替换为具体的年份
ax.set_xticklabels(['1996年','1997年','1998年','1999年','2000年','2001年','2002年','2003年','2004年','2005年','2006年','2007年','2008年','2009年','2010年','2011年','2012年','2013年','2014年','2015年'])
#生成我们的图标
plt.show()

任务2:绘制经济统计图

从 gdp.npz 中读取数据

提取国内生产总值、第一产业增加值、第二产业增加值_当季值、第三产业增加值等数据,绘制折线图

链接: https://pan.baidu.com/s/1CNlDRT9G8I_ewtoSpTBYAw 提取码: ra1j

简要来说,我们需要绘制如下的图表。

第一种形式

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
data=np.load("gdp.npz",allow_pickle=True)
my_data=data['values']
#设置画布的尺寸为10,,8,单位为英寸
fig=plt.figure(figsize=(10,8))
#创建两行一列的图标,ax1为第一张图标
ax1=fig.add_subplot(2,1,1)#第一张图
#从我们的my_data的总数据表中分别取出我们第一产业,第二产业,第三产业的数据
first=my_data[:,3]
second=my_data[:,4]
third=my_data[:,5]
#分别绘制我们第一、二、三、产业的折线图,并设置不同的折线类型来使我们的图标有所区别,并给我们的不同的折线打上标签
ax1.plot(first,label='第一产业')
ax1.plot(second,'-.',label='第二产业',)
ax1.plot(third,'--',label='第三产业')
#设置我们y轴的标签
ax1.set_ylabel('生产总值(亿元)')
#设置我们第一张图标的标题
ax1.set_title('2000-2017年各产业季度生产总值折线图')
#将我们的图例显示
ax1.legend(loc='best')#第二张图
#ax2为我们两行两列的第二张图
ax2=fig.add_subplot(2,1,2)
#分别提取我们不同的行业的数据
farm=my_data[:,6]
industry=my_data[:,7]
architecture=my_data[:,8]
sell=my_data[:,9]
transport=my_data[:,10]
eating=my_data[:,11]
money=my_data[:,12]
house=my_data[:,13]
other=my_data[:,14]
#设置我们纵轴的标签
ax2.set_ylabel('生产总值(亿元)')
#设置我们纵轴的范围
ax2.set_ylim(0,70000)
#分别绘制我们不同产业的折线图,并设置不同的折线类型加以区分并打上标签
ax2.plot(farm,label='农业')
ax2.plot(industry,'-.',label='工业')
ax2.plot(architecture,label='建筑业')
ax2.plot(sell,label='零售业')
ax2.plot(transport,label='运输业')
ax2.plot(eating,label='餐饮业')
ax2.plot(money,label='金融业')
ax2.plot(house,label='房地产')
ax2.plot(other,label='其他')
#打上示例
ax2.legend(loc='best')
#在我们的x轴的特定的位置打上我们的数字,为下面替换为具体的文字做准备
ax2.set_xticks(np.arange(18)*4)#将我们的a的列表设置为从2000到2017年+第一季度的形式
a=[]
for i in range(2000,2018):a.append((str(i)+"年第一季度"))
#为了避免我们的横轴的列表之间的重叠,我们将我们横轴的每个标签都旋转30度。
ax2.set_xticklabels(a,rotation=30)
plt.show()

第二种形式

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
data=np.load("gdp.npz",allow_pickle=True)
my_data=data['values']
fig=plt.figure(figsize=(10,8))
ax1=fig.add_subplot(2,1,1)#当前的我们的图表中一共有69个数据,我们的点状图需要具体的x轴和y轴,所以我们需要创建一个0-68的数组来作为我们的x轴
s=np.arange(69)#第一张图
#分别提取第一产业、第二产业、第三产业的数据
first=my_data[:,3]
second=my_data[:,4]
third=my_data[:,5]
#分别绘制第一产业,第二产业,第三产业的点状图,并为我们不同的点状图设置不同的样式来进行区分
ax1.scatter(s,first,label='第一产业',color='r')
ax1.scatter(s,second,label='第二产业',marker='*')
ax1.scatter(s,third,label='第三产业',marker='d')
#给我们的y轴打上标签
ax1.set_ylabel('生产总值(亿元)')
#给我们的图表打上标题
ax1.set_title('2000-2017年各产业季度生产总值折线图')
#给我们的图表创建示例
ax1.legend(loc='best')#第二张图
#在我们的两行一列的数据表的第二个位置创建我们的第二张图表(ax2)
ax2=fig.add_subplot(2,1,2)
#分别提取出我们不同行业的数据
farm=my_data[:,6]
industry=my_data[:,7]
architecture=my_data[:,8]
sell=my_data[:,9]
transport=my_data[:,10]
eating=my_data[:,11]
money=my_data[:,12]
house=my_data[:,13]
other=my_data[:,14]
#给我们y轴打上标签
ax2.set_ylabel('生产总值(亿元)')
#限制我们y轴的范围
ax2.set_ylim(0,70000)#给我们不同行业绘制具体的点状图,注意点状图需要具体的坐标,就是说scatter函数会从第一个列表中提取x轴,从第二个列表中提取我们的y轴,然后我们也可以根据自己的喜好来给我们的图表设置不同的样式
ax2.scatter(s,farm,label='农业')
ax2.scatter(s,industry,label='工业',marker='d')
ax2.scatter(s,architecture,label='建筑业',marker='*')
ax2.scatter(s,sell,label='零售业',marker='s')
ax2.scatter(s,transport,label='运输业',marker='h')
ax2.scatter(s,eating,label='餐饮业',marker='p')
ax2.scatter(s,money,label='金融业',marker='>')
ax2.scatter(s,house,label='房地产',marker='<')
ax2.scatter(s,other,label='其他',marker='^')
#给我们图标打上示例
ax2.legend(loc='best')
#给我们图表的x轴的一定位置打上数字(一共有18个数据,然后我们*4来让我们数据标签分散一些)
ax2.set_xticks(np.arange(18)*4)
#创建我们标签列表,使我们的标签中的每一个都是2000年-2017年+第一季度的形式
a=[]
for i in range(2000,2018):a.append((str(i)+"年第一季度"))
#为了方式我们的x坐标重叠,我们将我们的坐标旋转30度
ax2.set_xticklabels(a,rotation=30)
#将我们的x轴打上标签
ax2.set_xlabel('年份')
plt.show()

第三种形式

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
data=np.load("gdp.npz",allow_pickle=True)
my_data=data['values']
x=data['columns']
fig=plt.figure(figsize=(10,8))#第一张图
#在我们两行两列的第一张图的位置绘制我们的第一张图表
ax1=fig.add_subplot(2,2,1)
#分别提取出我们第一产业,第二产业,第三产业的数据
first=my_data[0,3]
second=my_data[0,4]
third=my_data[0,5]
#将我们具体数据组合成一个列表
all=[first,second,third]
#将我们的具体的横坐标和纵坐标的数据来绘制我们的柱状图
ax1.bar([1,2,3],all,label='第一产业')
#在我们的横坐标的1,2,3的位置打上刻度,为我们下面替换为第几产业做准备
ax1.set_xticks([1,2,3])
#将我们1,2,3的位置替换为具体的第几产业
ax1.set_xticklabels(['第一产业','第二产业','第三产业'])
#给我们的图表打上标题
ax1.set_title('2000年第一季度国民生产总值产业构成分布直方图')
#给我们的图标的y轴打上标签
ax1.set_ylabel('生产总值(亿元)')
#给我们图标的X轴打上标签
ax1.set_xlabel('产业')#第二张图
#(第二张图的创建方式与第一张图类似,不再解释)
ax2=fig.add_subplot(2,2,2)
first2=my_data[68,3]
second2=my_data[68,4]
third2=my_data[68,5]
all2=[first2,second2,third2]
ax2.bar([1,2,3],all2,label='第一产业')
ax2.set_xticks([1,2,3])
ax2.set_xticklabels(['第一产业','第二产业','第三产业'])
ax2.set_title('2017年第一季度国民生产总值产业构成分布直方图')
ax2.set_ylabel('生产总值(亿元)')
ax2.set_xlabel('产业')#第三张图
#我们在两行两列的画布的第三张图的位置绘图
ax3=fig.add_subplot(2,2,3)
#获取我们的数据
z=my_data[0,6:]
#提取我们的标签。x为我们的字段名,对x进行切片处理,就可以得到我们所需要的标签
biaoqian=x[6:]
#由于提取出来的标签太长了,我们将对我们的标签进行简短化处理,只取前两个字,但是房地产需要单独判断,取三个字
biaoqian2=[]
for i in biaoqian:if i=='房地产业增加值_当季值(亿元)':biaoqian2.append(i[0:3])continuebiaoqian2.append(i[0:2])
#给我们的第三张图打上标签
ax3.set_title('2000年第一季度国民生产总值行业构成分布直方图')
#设置一条从0-8的数据作为我们的x轴
b=np.arange(9)
#生成我们的条形图
ax3.barh(b,z)
#给我们的y轴打上0-8的刻度
ax3.set_yticks([0,1,2,3,4,5,6,7,8])
#将我们y轴上的刻度替换为具体的标签名称
ax3.set_yticklabels(biaoqian2)
#分别给我们的xy轴打上标签
ax3.set_xlabel('生产总值(亿元)')
ax3.set_ylabel('行业')#第四张图
#第四张图与第三张图类似,我们在此处不再做解释
ax4=fig.add_subplot(2,2,4)
z=my_data[68,6:]
biaoqian=x[6:]
biaoqian2=[]
for i in biaoqian:if i=='房地产业增加值_当季值(亿元)':biaoqian2.append(i[0:3])continuebiaoqian2.append(i[0:2])b=np.arange(9)
ax4.set_title('2017年第一季度国民生产总值行业构成分布直方图')
ax4.barh(b,z)
ax4.set_yticks([0,1,2,3,4,5,6,7,8])
ax4.set_yticklabels(biaoqian2)
ax4.set_xlabel('生产总值(亿元)')
ax4.set_ylabel('行业')
#因为我们的图标存在一定的重叠情况,所以我们使用下面的代码将我们的图标的位置分开
plt.subplots_adjust(wspace=0.3, hspace=0.3)
plt.show()

第四种形式

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
data=np.load("gdp.npz",allow_pickle=True)
my_data=data['values']
x=data['columns']
fig=plt.figure(figsize=(10,8))
ax1=fig.add_subplot(2,2,1)#第一张图
#分别获取我们第一产业,第二产业,第三产业的数据
first=my_data[0,3]
second=my_data[0,4]
third=my_data[0,5]
#将我们具体的数据组合为一个列表
all=[first,second,third]
#创建我们的饼图,all为数据,并用labels为我们的不同的饼块打上标签,autopct指的是给我们的饼图的数据保留一维小数的百分数,explode能够设置我们不同的饼块之间的距离
ax1.pie(all,labels=['第一产业','第二产业','第三产业'],autopct='%1.1f%%',explode=(0.03,0.03,0.03))
#为我们的饼图打上标签
ax1.set_title('2000年第一季度国民生产总值产业构成分布饼图')#第二张图
#第二张图与第一张图类似,此处不再做出解释
ax2=fig.add_subplot(2,2,2)
first2=my_data[68,3]
second2=my_data[68,4]
third2=my_data[68,5]
all2=[first2,second2,third2]
ax2.pie(all2,labels=['第一产业','第二产业','第三产业'],autopct='%1.1f%%',explode=(0.03,0.03,0.03))
ax2.set_title('2017年第一季度国民生产总值产业构成分布饼图')#第三张图
ax3=fig.add_subplot(2,2,3)
z=my_data[0,6:]
#创建我们具体的标签列表
biaoqian=x[6:]
biaoqian2=[]
for i in biaoqian:if i=='房地产业增加值_当季值(亿元)':biaoqian2.append(i[0:3])continuebiaoqian2.append(i[0:2])
ax3.set_title('2000年第一季度国民生产总值行业构成分布饼图')
b=np.arange(9)
#创建我们的饼图
ax3.pie(z,labels=biaoqian2,autopct='%1.1f%%',explode=(0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01))#第四张图
ax4=fig.add_subplot(2,2,4)
z=my_data[68,6:]
biaoqian=x[6:]
biaoqian2=[]
for i in biaoqian:if i=='房地产业增加值_当季值(亿元)':biaoqian2.append(i[0:3])continuebiaoqian2.append(i[0:2])b=np.arange(9)
ax4.set_title('2017年第一季度国民生产总值行业构成分布饼图')
ax4.pie(z,labels=biaoqian2,autopct='%1.1f%%',explode=(0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01,0.01))
#将我们的图标的位置分开
plt.subplots_adjust(wspace=0.3, hspace=0.3)
plt.show()

第五种形式

import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['Arial Unicode MS']
plt.rcParams['axes.unicode_minus'] = False
data=np.load("gdp.npz",allow_pickle=True)
my_data=data['values']
x=data['columns']
fig=plt.figure(figsize=(8,8))
ax1=fig.add_subplot(2,1,1)#第一张图
first=my_data[:,3]
second=my_data[:,4]
third=my_data[:,5]
#创建我们的箱线图
ax1.boxplot((first,second,third),labels=['第一产业','第二产业','第三产业'])
#给我们的第一张图表打上标签
ax1.set_title('2000-2017年第一季度国民生产总值产业构成分布箱线图')#第二张图
ax2=fig.add_subplot(2,1,2)
#分别获取各个产业的数据
z1=my_data[:,6]
z2=my_data[:,7]
z3=my_data[:,8]
z4=my_data[:,9]
z5=my_data[:,10]
z6=my_data[:,11]
z7=my_data[:,12]
z8=my_data[:,13]
z9=my_data[:,14]
#制作标签列表
biaoqian=x[6:]
biaoqian2=[]
for i in biaoqian:if i=='房地产业增加值_当季值(亿元)':biaoqian2.append(i[0:3])continuebiaoqian2.append(i[0:2])
ax2.set_title('2000-2017年第一季度国民生产总值行业构成分布箱线图')
#创建我们的箱线图
ax2.boxplot((z1,z2,z3,z4,z5,z6,z7,z8,z9),labels=biaoqian2)
plt.show()

matplotlib的简单练习相关推荐

  1. python画函数图像要用到的模块_教你如何绘制数学函数图像——numpy和matplotlib的简单应用...

    numpy和matplotlib的简单应用 一.numpy库 1.什么是numpy NumPy系统是Python的一种开源的数值计算扩展.这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表 ...

  2. 使用 matplotlib绘制简单图形,保存图片的方法

    本博客介绍如何使用 matplotlib 绘制简单的图形,并介绍保存图片的方法. matplotlib 可以绘制出很高级,很复杂的图形,本篇博客不做介绍,可以查看官方文档,写的很清楚,这里仅对部分使用 ...

  3. 海豚php如何添加节点,python+matplotlib绘制简单的海豚(顶点和节点的操作)

    海豚 本文例子主要展示了如何使用补丁.路径和转换类绘制和操作给定的顶点和节点的形状. 测试可用. import matplotlib.cm as cm import matplotlib.pyplot ...

  4. 用html4绘制海豚,python+matplotlib绘制简单的海豚(顶点和节点的操作)

    海豚 本文例子主要展示了如何使用补丁.路径和转换类绘制和操作给定的顶点和节点的形状. 测试可用. import matplotlib.cm as cm import matplotlib.pyplot ...

  5. c#split方法拆分为数据_Dexplot:基于pandas,比matplotlib更简单的数据可视化和数据分析工具...

    Dexplot:建议准备学matplotlib和seaborn的数据可视化新手或者数据可视化爱好者食用 适用于长数据 比如网站用户留言的统计 特色是不用matplotlib 而用pandas导入数据( ...

  6. 【Python-3.5】matplotlib做简单折线图

    在matplotlib中使用plot()函数可以做出简单折线图,预期效果如下: 代码如下: # 导入pyplot模块 import matplotlib.pyplot as plt# 输入横纵坐标数据 ...

  7. python中matplotlib 的简单使用

    1.简单折线图的画图,轴标签.图的颜色,风格,等等参数,本文只介绍最常用的几个参数: 1 import matplotlib.pyplot as plt 2 import numpy as np 3 ...

  8. 在python中使用matplotlib画简单折线图

    live long and prosper 在python中安装matplotlib实现数据可视化(简单折线图) 1.安装matplotlib 在Windows平台上,试用win+R组合键打开命令行窗 ...

  9. python第三方库matplotlib绘制简单折线图

    一.绘制简单折线图 代码如下: import numpy as np import matplotlib.pyplot as plt X = [0, 1, 2, 3, 4, 5] Y = [222, ...

最新文章

  1. 两位MIT学霸,25岁退学,40岁完成800亿IPO!
  2. Tomcat配置多个虚拟主机、部署多个项目
  3. 利用 force index优化sql语句性能
  4. Service的一些使用
  5. VBA SQL查询-记录集转数组
  6. resnet论文解读及代码实现
  7. php 读写excel 网络错误,谁用过PHPExcel,导出的文件报“无法读取的内容”错误
  8. python矩阵乘法算法_纯python进行矩阵的相乘运算的方法示例
  9. java 流已被关闭_mybatis oracle java.sql.SQLException: 流已被关闭问题
  10. 计算机兴趣小组的意义,计算机兴趣小组总结
  11. FairMOT论文详解
  12. 如何通过看书来学习技术
  13. 【转】putty基本操作--不错
  14. css精灵图如何取图
  15. C语言课程设计--推箱子
  16. ds18b20温度转换指令_【原创】基于单片机的DS18B20温度显示
  17. 聊一聊如何准备计算机Python二级考试
  18. 关于ubuntu上,usb设备编号
  19. 智慧城市是什么,建设智慧城市需要哪些核心技术?
  20. Windows10远程桌面无法复制粘贴问题

热门文章

  1. SPOJ FUNPROB - Yanu in Movie theatre
  2. 巩固剖析并发基础:并发三大特性详解 代码实例分析可见性问题 深入了解JMM模型
  3. offer写的薪资3.5万,入职时公司却让签5000元薪资的合同,不签就无法入职!
  4. GroupingComparator辅助排序
  5. ad18常用快捷键可以修改吗_AD 常用快捷键记录
  6. PyQt5中线程挂起终止和唤醒
  7. VScode简单配置深度学习环境(连接远程服务器)
  8. 流形学习(一)LLE 在 MATLAB 中的实现及实例
  9. web报表工具在线制作数据可视化大屏
  10. HTML5 在线新闻浏览