Matplotlib练习

  • 题目
  • 练习一
    • 方法一(条形图)
      • 方法一效果图
    • 方法二(扇形图)
      • 方法二效果图
  • 练习二
    • 练习二代码
    • 练习二效果图
  • 小结

题目

练习一

方法一(条形图)

from matplotlib import pyplot as plt
from matplotlib.font_manager import FontProperties# 处理中文字体的问题
font = FontProperties(fname=r"c:\windows\fonts\simsun.ttc", size=12)# Question 1: 绘制班级的身高分布图形
# Data of question 1
height = [160, 163, 175, 180, 176, 177, 168, 189, 188, 177, 174, 170, 173, 181]
# 班级人数
totalNumber_students = len(height)# 首先处理数据 把重复的数据去除 但同时记下来重复的个数
height.sort()
number_students = []
for every_height in height:number_students.append(height.count(every_height))
data_pair = list(zip(height, number_students))for x, y in data_pair:if data_pair.count((x, y)) != 1:data_pair.remove((x, y))# 此方法的缺陷:此方法不方便添加数据标签
# 因为标签容易叠加在一起 导致分析不够直观以及视图不够美观
for (x, y) in data_pair:plt.bar(x, y, width=0.7, align='center')
plt.xlabel("身高", fontproperties=font)
plt.ylabel("人数", fontproperties=font)
plt.title("某班级的身高比例图", fontproperties=font)
plt.show()

方法一效果图

方法二(扇形图)

height.clear()  # 清空原有的list,存放处理好的身高数据
number_students.clear()  # 清空原有的list,存放处理好后的对应身高的人数/比例
explode = []
j = 0
for (x, y) in data_pair:height.append(str(x))number_students.append(y)
for i in range(len(number_students)):number_students[i] = number_students[i] / totalNumber_studentsexplode.append(j + 0.02*i)result = plt.pie(number_students, labels=height, explode=explode, autopct='%.2f%%', shadow=True)
patches, texts, auto_texts = result
# 美化视图
plt.setp(auto_texts, size=10, weight='bold', color='w')
plt.setp(texts, size=8, weight='bold', color='brown')
# 添加图例
plt.legend(loc="upper right", bbox_to_anchor=(1, 0, 0.32, 1))
# 标注必要信息
plt.text(1.3, -1, "班级总人数为" + str(totalNumber_students), fontproperties=font, color='blue')
# 添加标题
plt.title("某班级的身高比例图", fontproperties=font)
# 展示结果
plt.show()

方法二效果图

练习二

练习二代码

# Question 2: 实现对应的子图分部
import random
from matplotlib import pyplot as plt
# 创建画布
fig = plt.figure()# 定义布局的宽度、高度比例
width = (4, 1)
height = (1, 5)# 复杂的布局需要用gridspec对象,将fig的gridspec对象赋值给gs
gs = fig.add_gridspec(2, 2, width_ratios=width, height_ratios=height)# [行,列] 是从 [0,0] 开始的
# 绘制子图布局
ax1 = fig.add_subplot(gs[0, 0])
ax2 = fig.add_subplot(gs[1, 0])
ax3 = fig.add_subplot(gs[1, 1])# 生成随机数
x = [random.randint(0, 30) for i in range(30)]
y = [random.randint(0, 30) for i in range(30)]# 绘制子图
ax1.plot(range(5), range(5))  # 直线图
ax2.scatter(x, y)  # 散点图
ax3.plot(range(5), range(5))  # 直线图# 展示成果
plt.show()

练习二效果图

小结

  1. 扇形图的数据处理相对于条形图的数据处理繁琐一些。
  2. 练习一可以尝试用频次直方图。
  3. 练习一的坐标没有设置好。
  4. 练习二中的散点图是利用的随机生成的数字,所以每次运行后的结果会后偏差。

利用Python Matplotlib库做简单的视觉化(2)相关推荐

  1. 利用Python Matplotlib库做简单的视觉化

    Matplotlib练习 练习一 题目 代码 效果图 练习二 题目 练习1代码 练习1效果图 练习2代码 练习2效果图 小结 练习一 题目 代码 import matplotlib.pyplot as ...

  2. 霍兰德人格分析:利用Python第三方库matplotlib绘制雷达图

    美国约翰霍普金斯大学霍兰德教授认为,个人职业兴趣特性与职业之间应有一种内在的对应关系.根据兴趣的不同,人格可分为研究型(I).艺术型(A).社会型(S).企业型(E).传统型(C).现实型(R)六个维 ...

  3. Python学习-Matplotlib库绘制简单点阵图、线型图操作

    Python学习-Matplotlib库绘制简单散点图图和线型图.标签设置以及刻度线设置操作 目录 1.Matplotlib绘图细节的简单理解 2.绘制点图.线型图 3.给图表设置复杂标注 4.移动刻 ...

  4. 利用python机器学习库进行Kaggle皮马印第安人糖尿病预测分析

    利用python机器学习库进行Kaggle皮马印第安人糖尿病预测分析 项目摘要 本项目主要使用python对各医学参数与糖尿病之间的关系进行可视化分析.描述性分析.使用scikit-learn机器学习 ...

  5. 利用python—matplotlib绘制股票K线图

    利用python-matplotlib绘制股票K线图 成品展示: 用Python绘制股票K线图并不复杂,不过得做好一些准备工作例如相关库的安装,库的引入.日期格式的调整and表格转换 文章目录 利用p ...

  6. python123九宫格输入_使用python PIL库实现简单验证码的去噪方法步骤

    字符型图片验证码识别完整过程及Python实现的博主,我的大部分知识点都是从他那里学来的. 想要识别验证码,收集足够多的样本后,首先要做的就是对验证码原始图片进行处理,对验证码识别分类之前,一般包括: ...

  7. 利用python you-get库下载网络视频、音乐及图片

    Python,让繁琐工作高效便捷:利用python you-get库单个.批量下载网络视频.音乐及图片,you-get命令需要在cmd窗口中运行. 很多人学习python,不知道从何学起. 很多人学习 ...

  8. Python - matplotlib库 - 中文字体设置

    Python - matplotlib库 - 中文字体设置 在matplotlib绘制折线图柱状图时,如果对x,y,图表标题,直接使用plot.xlabel("时间"):plot. ...

  9. python 读取geotiff_科学网—利用python GDAL库读写geotiff格式的遥感影像方法 - 张伟的博文...

    (1)利用python GDAL库读写geotiff格式的遥感影像方法,具有很好的参考价值,不错! from osgeo import gdal import numpy as np def read ...

最新文章

  1. PCI BAR设置过程
  2. 【JavaSE05】Java中方法与重载、递归
  3. 小学身高体重测试软件,学生身高、体重检测汇总分析
  4. Python函数式编程简介(一)高阶函数
  5. JQuery实现页面跳转
  6. 自定义ProgressBar(圆)
  7. php分布式缓存系统 Memcached 入门
  8. 王思聪在京被执行案和解了!已履行5000万
  9. update fabric from 1.3 to 1.8
  10. 企业生产一线管理应找怎样的好帮手?
  11. linux命名管道fifo通信示例
  12. 马克思主义基本原理习题册
  13. 「猪齿鱼」助力汉得信息智能制造集中交付高效协同
  14. Tims中国上市背后:以新流派打法,“开源”咖啡市场
  15. iText API操作doc文档
  16. BI神器Power Query(22)-- 同一列内多重替换(2)
  17. 文件管理nas php,家用nas安装配置可道云进行文件管理
  18. 第六讲 Linux字符设备驱动1
  19. 连夜整理了多年后端开发最常用linux指令(建议收藏,边用边学)
  20. 谷歌插件blazemeter添加到扩展程序时提示文件缺失不可读取问题解决

热门文章

  1. python面试题No6
  2. Leetcode 509. Fibonacci Number
  3. (C/C++) string / *char / int 基本轉換
  4. [靠谱原创!] SSH免密登录设置----原理详解+具体操作(全国人民看完都懂了!)
  5. PHP的学习--可变函数
  6. DataTable 中各种计算(笔记)
  7. log4net使用注意
  8. 修改Google toolbar for firefox的默认语言
  9. 计算机缺考学校知道吗,计算机二级机考缺考成绩单会不会显示缺考啊
  10. linux日志auditd,linux 审计工具auditd日志audit.log时间戳转换查看