1.matplotlib是什么?

python底层的绘图工具

2. matplotlib的基本要点:

  • 如何设置图片的大小;
  • 如何保存到本地;
  • x轴和y轴的描述信息;
  • 中文显示乱码问题;
  • 调整x轴和y轴的刻度;
  • x轴的刻度信息过长, 如何调整?
  • 标记最高点;

案例1: 假设一天中每隔两个小时气温变化的折线图绘制;

from matplotlib import pyplot as plt
from matplotlib import font_manager
# 中文显示乱码问题;
myfont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=18)
titlefont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=24)
# 图表的x轴的数据, 是一个可迭代的数据类型
x_times = range(0, 24, 2)
# 图表的y轴的数据, 是一个可迭代的数据类型
y_temp = [15, 12, 13, 20, 23, 30, 15, 12, 13, 20, 23, 30]# min(y_temp), max(y_temp)#  1). 如何设置图片的大小;
plt.figure(figsize=(10, 10))# 传入x和y轴的数据, 绘制图形;
plt.plot(x_times, y_temp)# 3). x轴和y轴的描述信息;
plt.title("每天的气温变化(每隔两个小时)",fontproperties=titlefont )
plt.xlabel("时间", fontproperties=myfont)
plt.ylabel("温度", fontproperties=myfont)# 5). 调整x轴和y轴的刻度;
# 6). x轴的刻度信息过长, 如何调整?
plt.xticks(x_times, labels=["%s时0分"%(i) for i in x_times], fontproperties=myfont, rotation=45)
y_temp_range = range(min(y_temp), max(y_temp)+1, 2)
plt.yticks(y_temp_range, labels=["%s 。C"%(i) for i in y_temp_range], fontproperties=myfont)#
plt.scatter(x_times[2], y_temp[2], color='b')
plt.scatter(x_times[2], y_temp[2], color='', marker='o', edgecolors='r', s=300)# 2). 如何保存到本地;
plt.savefig('doc/temp.png')# 在执行程序时显示图像
# plt.show()

折线图练习-温度变化的折线图

绘制10点到12点每分钟的气温, 如何绘制折线图观察每分钟气温的变化情况?

import randomfrom matplotlib import pyplot as plt
from matplotlib import font_manager
# 中文显示乱码问题;
myfont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=18)
titlefont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=24)
# 图表的x轴的数据, 是一个可迭代的数据类型
x_times = range(0,120)
# 图表的y轴的数据, 是一个可迭代的数据类型
y_temp = [random.randint(20, 35) for i in range(120)]# min(y_temp), max(y_temp)#  1). 如何设置图片的大小;
plt.figure(figsize=(20, 20))# 传入x和y轴的数据, 绘制图形;
plt.plot(x_times, y_temp)# 3). x轴和y轴的描述信息;
plt.title("10点到11点温度变化)",fontproperties=titlefont )
plt.xlabel("时间", fontproperties=myfont)
plt.ylabel("温度", fontproperties=myfont)# 5). 调整x轴和y轴的刻度;
# 6). x轴的刻度信息过长, 如何调整?# 10时10分
# 11时10分
_x_labels = ["10时%s分" %(i) for i in range(0, 60, 10)]
_x_labels += ["11时%s分" %(i) for i in range(0, 60, 10)]
plt.xticks(x_times[::10], labels=_x_labels, fontproperties=myfont, rotation=45)
y_temp_range = range(min(y_temp), max(y_temp)+1, 2)
plt.yticks(y_temp_range, labels=["%s 。C"%(i) for i in y_temp_range], fontproperties=myfont)# 如何保存到本地;
plt.savefig('doc/temp3.png')

折线图练习-每年交男女朋友的变化

假设大家在30岁的时候,根据自己的实际情况统计出来从11岁到30岁每年交的女
(男)朋友的数量如a,请绘制出该数据的折线图,以便分析每年交女(男)朋友的数量走势;

import random
from matplotlib import pyplot as plt
from matplotlib import font_managerx_age = range(11, 31)
y_count = [random.randint(0, 5) for i in range(20)]
myfont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=14)
titlefont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=20)plt.figure(figsize=(10, 10))
plt.plot(x_age, y_count)
plt.title("11岁至30岁所交男(女)友个数", fontproperties=titlefont)
plt.xlabel("年龄", fontproperties=myfont)
plt.ylabel("女(男)友数量", fontproperties=myfont)plt.xticks(x_age, labels=["%s岁" %(item) for item in x_age], fontproperties=myfont, rotation=45)
plt.scatter(x_age[0], y_count[0], c='r')plt.savefig('doc/age.png')

折线图练习-每年交男女朋友数量的对比

假设大家30岁时统计出你和你同桌各自从11岁到30岁每年交女(男)朋友的数量如列表a和b,
请在一个图中展示数据折线图,以便比较两人20年之间每年交女(男)朋友的数量走势

import random
from matplotlib import pyplot as plt
from matplotlib import font_managerx_age = range(11, 31)
y_count_1 = [random.randint(0, 5) for i in range(20)]
y_count_2 = [random.randint(0, 5) for j in range(20)]
myfont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=14)
titlefont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=20)plt.figure(figsize=(10, 10))# 在同一个图里面绘制多条折线,
#  color: 线条颜色
#  linestyle: 线条的风格
#  linewidth: 线条的粗细
#  alpha: 透明度
plt.plot(x_age, y_count_1, color='g', linestyle='-.', linewidth=5, alpha=0.5, label="自己")
plt.plot(x_age, y_count_2, color='r', linestyle='--', linewidth=3, alpha=0.3, label="同桌")# 添加图例
plt.legend(loc="upper right", prop=titlefont)# 添加网格
plt.grid(alpha=0.3)plt.title("11岁至30岁所交男(女)友个数", fontproperties=titlefont)
plt.xlabel("年龄", fontproperties=myfont)
plt.ylabel("女(男)友数量", fontproperties=myfont)plt.xticks(x_age, labels=["%s岁" %(item) for item in x_age], fontproperties=myfont, rotation=45)
plt.scatter(x_age[0], y_count_1[0], c='r')plt.savefig('doc/age02.png')

散点图绘制

绘制北京3,10月份每天白天的最高气温随时间(天)变化的散点图,并找出规律
数据来源:天气网 http://lishi.tianqi.com/beijing/index.html
a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23]
b = [26,26,28,19,21,17,16,19,18,20,20,19,22,23,17,20,21,20,22,15,11,15,5,13,17,10,11,13,12,13,6]
难点:
散点图语法
绘制两边分布式x轴坐标

from matplotlib import pyplot as plt
from matplotlib import font_manager#  中文显示乱码问题;
myfont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=18)
titlefont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=24)# 图表的x轴的数据, 是一个可迭代的数据类型
x_march = range(1, 32)
x_oct = range(50, 81)# 图表的y轴的数据, 是一个可迭代的数据类型
y_temp_march = [11, 17, 16, 11, 12, 11, 12, 6, 6, 7, 8, 9, 12, 15, 14, 17, 18, 21, 16, 17, 20, 14, 15, 15, 15, 19, 21,22, 22, 22, 23]
y_temp_oct = [26, 26, 28, 19, 21, 17, 16, 19, 18, 20, 20, 19, 22, 23, 17, 20, 21, 20, 22, 15, 11, 15, 5, 13, 17, 10, 11,13, 12, 13, 6]#   如何设置图片的大小;
plt.figure(figsize=(30, 10))# 传入x和y轴的数据, 绘制图形;
plt.scatter(x_march, y_temp_march, label="3月的温度变化", color='r', alpha=0.5)
plt.scatter(x_oct, y_temp_oct, label="10月的温度变化", color='g', alpha=0.5)# 3). x轴和y轴的描述信息;
plt.title("北京3,10月份每天白天的最高气温随时间(天)变化的散点图", fontproperties=titlefont)
plt.xlabel("时间", fontproperties=myfont)
plt.ylabel("温度", fontproperties=myfont)# 5). 调整x轴和y轴的刻度;
# 6). x轴的刻度信息过长, 如何调整?
_x_info = list(x_march) + list(x_oct)
_x_labels_march = ["3月%s日" % (i) for i in x_march]
_x_labels_oct = ["10月%s日" % (i - 49) for i in x_oct]  # range(50, 81)
plt.xticks(_x_info[::3], labels=(_x_labels_march + _x_labels_oct)[::3], fontproperties=myfont, rotation=45)plt.legend(prop=myfont, loc="upper left")
plt.grid(alpha=0.5)# 2). 如何保存到本地;
plt.savefig('doc/scatter.png')# 在执行程序时显示图像
# plt.show()

绘制单个条形图案例

假设你获取到了某年内地电影票房前20的电影(列表a)和电影票房数据(列表b),那么如何更加直观的展示该数据?

a = ["战狼2”,"速度与激情8”,"功夫瑜伽”,"西游伏妖篇”,"变形金刚5:最后的骑士”,"摔跤吧!爸爸”,
"加勒比海盗5:死无对证”,"金刚:骷髅岛”,"极限特工:终极回归”, "侠:英雄归来”,"悟空传”,"银河护卫队2”,"情圣”,"新木乃伊”,]b=[56.01,26.94,17.53,16.49,15.45,12.96,11.8,11.61,11.28,11.12,10.49,
10.3,8.75,7.55,7.32,6.99,6.88,6.86,6.58,6.23] 单位:亿from matplotlib import pyplot as plt
from matplotlib import font_manager#  中文显示乱码问题;
myfont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=18)
titlefont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=24)y_money = [56.01, 26.94, 17.53, 16.49, 15.45, 12.96, 11.8, 11.61, 11.28, 11.12, 10.49,10.3, 8.75, 7.55, 7.32, 6.99, 6.88, 6.86, 6.58, 6.23]
x_movies = ["流浪地球%s" %(i) for i in range(len(y_money))]#   如何设置图片的大小;
plt.figure(figsize=(30, 10))
# (1,2)  -====('a', 10)
# 生成竖向的条形图
# plt.bar(range(len(x_movies)), y_money, color='orange', width=0.5)
# # 生成横向的条形图
plt.barh(range(len(x_movies)), y_money, color='orange', height=0.7)# 修改刻度信息的配置
# plt.xticks(range(len(y_money)), labels=x_movies, fontproperties=myfont, rotation=45)
plt.yticks(range(len(y_money)), labels=x_movies, fontproperties=myfont, rotation=45)# 3). x轴和y轴的描述信息;
plt.title("某年内地电影票房前20的电影和电影票房数据", fontproperties=titlefont)
plt.xlabel("电影名", fontproperties=myfont)
plt.ylabel("电影票房(单位:亿)", fontproperties=myfont)
plt.savefig('doc/bar.png')

绘制多个条形图

假设你知道了列表a中电影分别在2017-09-14(b_14), 2017-09-15(b_15), 2017-09-16(b_16)
三天的票房,为了展示列表中电影本身的票房以及同其他电影的数据对比情况,应该如何更加直观的呈现该数据?

a = ["猩球崛起3:终极之战”,"敦刻尔克”,"蜘蛛侠:英雄归来”,"战狼2”]
b_16 = [15746,312,4497,319]
b_15 = [12357,156,2045,168]
b_14 = [2358,399,2358,362]
数据来源: http://www.cbooo.cn/movieday

from matplotlib import pyplot as plt
from matplotlib import font_manager#  中文显示乱码问题;
myfont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=18)
titlefont = font_manager.FontProperties(fname="/usr/share/fonts/cjkuni-uming/uming.ttc", size=24)x_movies_name = ["猩球崛起3:终极之战", "敦刻尔克", "蜘蛛侠:英雄归来", "战狼2"]
y_16 = [15746, 312, 4497, 319]
y_15 = [12357, 156, 2045, 168]
y_14 = [2358, 399, 2358, 362]#   如何设置图片的大小;
plt.figure(figsize=(30, 10))# 生成竖向的条形图
bar_width = 0.3x_range = range(len(x_movies_name))
# ['a', 'b', 'c', 'd'] ===== [0, 1,2,3]
# [1,2,3,4]
# [3,4,4,4]# [(0, 1), (1, 2), (2, 3), (3, 4)]
# [(0+0.3, 1), (1+0.3, 3)]
plt.bar(x_range, y_14, color='green', width=bar_width, label="2017-09-14票房数据")
plt.bar([i + bar_width for i in x_range], y_15, color='red', width=bar_width, label="2017-09-15票房数据")
plt.bar([i + bar_width * 2 for i in x_range], y_16, color='orange', width=bar_width, label="2017-09-16票房数据")
# 修改刻度信息的配置
plt.xticks(range(len(x_movies_name)), labels=x_movies_name, fontproperties=myfont, rotation=45)# 3). x轴和y轴的描述信息;
plt.title("某年内地电影票房前20的电影和电影票房数据", fontproperties=titlefont)
plt.xlabel("电影名", fontproperties=myfont)
plt.ylabel("电影票房(单位:亿)", fontproperties=myfont)
plt.savefig('doc/bar.png')

绘制直方图

250部电影的时长, 电影时长的分布状态;

把数据分为多少组进行统计?
如果数据在100个以内, 一般分为5-12组;
组距:每个小组里面端点的距离;
组数 = 极差 / 组距

import random
from matplotlib import  pyplot as plty = [random.randint(60,180) for i in range(250)]# 直方图绘制数据分为20个分组;
plt.hist(y, 20)
plt.savefig('doc/01_hist.png')

绘制直方图-设置组数

import random
from matplotlib import pyplot as plty = [random.randint(60, 180) for i in range(250)]d = 10  # 组距
# 组数
num_bins = (max(y) - min(y)) // d# 设置x轴的刻度范围,
plt.xticks(list(range(min(y), max(y) + d))[::d])plt.grid(linestyle='-.', alpha=0.3)# 直方图绘制数据分为20个分组;
plt.hist(y, num_bins)
plt.savefig('doc/02_hist.png')

python--matplotlib模块相关推荐

  1. python matplotlib模块画出的图像转换为.tiff格式

    利用python matplotlib模块(python3.7.1)画出的图表暂不支持直接导出.tiff格式的图片,但是可以导出eps, pdf, pgf, png, ps, raw, rgba, s ...

  2. python matplotlib模块——绘制三维图形、三维数据散点图

    2019独角兽企业重金招聘Python工程师标准>>> 分类: 计算机视觉 python matplotlib模块,是扩展的MATLAB的一个绘图工具库.他可以绘制各种图形,可是最近 ...

  3. Python matplotlib模块实现数据可视化

    Python matplotlib模块实现数据可视化 代码如下: # -*- coding: utf-8 -*- import matplotlib.pyplot as plt import nump ...

  4. windows 命令行cmd安装python matplotlib模块后pycharm显示“ModuleNotFoundError: No module named ‘matplotlib‘解决方法

    问题描述: 通过cmd查看已安装的python模块: 显示已经安装了matplotlib模块,但在pycharm中导入该模块时提示: 解决方法: 发生这种问题的原因是pycharm当前项目所使用的解释 ...

  5. 基于 Python Matplotlib 模块的高质量图形输出

    1 关于 Matplotlib 模块 Matplotlib 是一个由 John Hunter 等开发的,用以绘制二维图形的 Python 模块.它利用了 Python 下的数值计算模块 Numeric ...

  6. macOSX中使用python matplotlib模块的问题解决

    在mac OSX 上,使用python matplotlib库时,出现问题: >>> import numpy as np >>> import matplotli ...

  7. python matplotlib模块教程_Python中的Matplotlib模块入门教程

    1 关于 Matplotlib 模块 Matplotlib 是一个由 John Hunter 等开发的,用以绘制二维图形的 Python 模块.它利用了 Python 下的数值计算模块 Numeric ...

  8. python简单图形输出_基于 Python Matplotlib 模块的高质量图形输出

    Matplotlib 是一个由 John Hunter 等开发的,用以绘制二维图形的 Python 模块.它利用了 Python 下的数值计算模块 Numeric 及 Numarray,克隆了许多 M ...

  9. Python: matplotlib模块 源码阅读理解

      在写如下代码的时候,matplotlib模块引起了我的兴趣. #!/usr/bin/env python # -*- coding: utf-8 -*-import matplotlib as m ...

  10. python中plot柱状图-python matplotlib模块: bar(柱状图)

    plt模块的bar方法可以帮助我们绘制竖着的柱状图. 功能非常强大, 使用起来非常简单, 详细注释放在源码. 其中各种颜色的hex值可以从: 各种颜色hex值获取 源码: # coding=utf-8 ...

最新文章

  1. chrome扩展推荐:有我,你又省了一个ssh客户端 --- Secure Shell
  2. PetShop4,错误提示:System.Web.Security.SqlMembershipProvider”要求一个与架构版本“1”兼容的数据...
  3. OpenCV直方图比较Histogram Comparison
  4. 【渝粤题库】陕西师范大学202411 管理学基础 作业 (专升本、高起本、高起专)
  5. 你需要知道的基础算法知识——STL和基础数据结构(五)
  6. TensorFlow2.0:模型的保存与加载
  7. StanfordDB class自学笔记 (10) Unified Modeling Language
  8. 海康摄像头故障处理踩坑记录
  9. DGIOT物联网开源平台——腾讯云轻量应用服务器部署
  10. mysql修改唯一索引
  11. android开发利器--站在巨人肩膀上前行
  12. 图像分辨率和图像大小的计算
  13. 用纯CSS实现优雅的tab页
  14. python直接使用大括号生成_Python 解析式、生成器
  15. 用C语言实现菱形图案
  16. 【降维打击】希尔伯特曲线
  17. 如何在云计算平台上完成分子对接
  18. R语言和医学统计学(3):卡方检验
  19. phoenix的元数据一般存在哪里_【Python基础】hive的元数据存在哪里
  20. GeeksforGeeks 智力题

热门文章

  1. Linux学习整理-网络命令集
  2. 现在网上很火的无货源电商可靠吗?
  3. codeup26206 打击犯罪
  4. 2022年潜江中级工程师职称查询方式有哪些呢?甘建二
  5. 面试题:JVM垃圾收集器
  6. css盒模型以及如何计算盒子的宽度
  7. 周报 学习成果汇报
  8. SU2设置初始FFD
  9. jar文件加密方法之xjar使用教程
  10. CSS--box-shadow