1、什么是matplotlib

Matplotlib 是 Python 中最受欢迎的数据可视化软件包之一,支持跨平台运行,它是 Python 常用的 2D 绘图库,同时它也提供了一部分 3D 绘图接口。Matplotlib 通常与 NumPy、Pandas 一起使用,是数据分析中不可或缺的重要工具之一。
Matplotlib 是 Python 中类似 MATLAB 的绘图工具。MATLAB是美国MathWorks公司出品的商业数学软件,用于数据分析、无线通信、深度学习、图像处理与计算机视觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
matplotlib 支持的图形 https://matplotlib.org/stable/gallery/index.html

2、基础使用(以下都以折线图为例)

from matplotlib import pyplot as plt  # 绘图导入 pyplot 一般会重命名为plt
# 展示每隔两个小时的温度变化
x = range(2,26,2)  # [2,4,6,8 ... ,22,24]
y = [15,13,14.5,17,20,25,26,26,24,22,18,15]
# 绘图
plt.plot(x,y)
# 展示图形
plt.show()


上面图片存在的问题:

  • 图片的大小(想要高清大图)
  • 保存到本地
  • 描述信息,比如x,y轴表示什么
  • 调整刻度的间距
  • 线条的样式(颜色、透明度)
  • 标记出特殊的点(比如最高点,最低点)
  • 给图片加水印,防伪

3、设置图片宽高、分辨率、xy轴刻度、保存图片到本地

from matplotlib import pyplot as plt  # 绘图导入 pyplot 一般会重命名为plt# 展示每隔两个小时的温度变化
x = range(2,26,2)  # [2,4,6,8 ... ,22,24]
y = [15,13,14.5,17,20,25,26,26,24,22,18,15]"""
figure 指的是我们画的图
figsize 宽 高
dpi 没英寸多少个点,点多了,放大后不会模糊,有锯齿形
"""
plt.figure(figsize=(20, 8), dpi=80)# 绘图
plt.plot(x,y)# 设置x轴刻度
# plt.xticks(x)
xticks_lables = [i/2 for i in range(4, 49)]
# plt.xticks(xticks_lables)
plt.xticks(xticks_lables[::3])  # 太密集了,可以每三个取一个
# 设置y轴刻度
plt.yticks(range(min(y), max(y)+1))
# 设置刻度颜色,设置刻度倾斜等 参考 https://blog.csdn.net/Poul_henry/article/details/82590392# 保存
# plt.savefig("./sig_size.png")
# plt.savefig("./sig_size.svg")  # 可以保存为svg矢量图格式,放大不会有锯齿# 展示图形
plt.show()

4、X,y轴显示字符串并旋转显示

显示10点到12点每分钟气温变化

from matplotlib import pyplot as plt
import randomx = range(0, 120)
y = [random.randint(20, 35) for i in range(120)]plt.figure(figsize=(15, 8), dpi=80)plt.plot(x,y)# 调整x 轴的刻度
xtick_lables = ["10:{}".format(i) for i in range(60)]
xtick_lables += ["11:{}".format(i) for i in range(60)]# plt.xticks(list(x)[::3], xtick_lables[::3],rotation=270)  # rotation 旋转的度数
plt.xticks(list(x)[::3], xtick_lables[::3],rotation=60)  # rotation 旋转的度数yticks_lables = ["{}tem".format(i) for i in range(15, 40, 2)]
plt.yticks(range(15, 40, 2), yticks_lables,rotation=60)plt.show()

5、X,y轴显示中文并设置字体大小

如果不设置,中文不能正常显示
针对Windows ,字体存放位置 C:\Windows\Fonts
linux/mac可以参考: https://www.bilibili.com/video/BV1hx411d7jb?p=6
也可以参考: https://www.runoob.com/numpy/numpy-matplotlib.html

from matplotlib import pyplot as plt
import random
from matplotlib import font_managermy_font = font_manager.FontProperties(fname=r"C:\Windows\Fonts\SIMLI.TTF", size=12)x = range(0, 120)
y = [random.randint(20, 35) for i in range(120)]plt.figure(figsize=(15, 8), dpi=80)plt.plot(x,y)# 调整x 轴的刻度
xtick_lables = ["10:{}".format(i) for i in range(60)]
xtick_lables += ["11:{}".format(i) for i in range(60)]# plt.xticks(list(x)[::3], xtick_lables[::3],rotation=270)  # rotation 旋转的度数
plt.xticks(list(x)[::3], xtick_lables[::3],rotation=60)  # rotation 旋转的度数yticks_lables = ["{}度".format(i) for i in range(15, 40, 2)]
plt.yticks(range(15, 40, 2), yticks_lables,rotation=60,fontproperties=my_font)plt.show()

6、设置XY轴和标题的描述信息并绘制网格

from matplotlib import pyplot as plt
import random
from matplotlib import font_managermy_font = font_manager.FontProperties(fname=r"C:\Windows\Fonts\SIMLI.TTF", size=12)x = range(0, 120)
y = [random.randint(20, 35) for i in range(120)]plt.figure(figsize=(15, 8), dpi=80)plt.plot(x,y)# 调整x 轴的刻度
xtick_lables = ["10:{}".format(i) for i in range(60)]
xtick_lables += ["11:{}".format(i) for i in range(60)]# plt.xticks(list(x)[::3], xtick_lables[::3],rotation=270)  # rotation 旋转的度数
plt.xticks(list(x)[::3], xtick_lables[::3],rotation=60)  # rotation 旋转的度数yticks_lables = ["{}度".format(i) for i in range(15, 40, 2)]
plt.yticks(range(15, 40, 2), yticks_lables,rotation=60,fontproperties=my_font)# 添加描述信息
plt.xlabel("时间",fontproperties=my_font)
plt.ylabel("温度 单位(℃)",fontproperties=my_font)
plt.title("10点到12点每分钟的气温变化情况",fontproperties=my_font)# 绘制网格
plt.grid(alpha=0.9)  # alpha 可以调整透明度,数值越大越清晰plt.show()

7、同时绘制出两条折线并添加图例、设置折线颜色,折线样式

from matplotlib import pyplot as plt
from matplotlib import font_manager"""
a 是自己  b 是同桌
x 轴是年龄  y 轴是女朋友的数量
"""
a = [1,0,2,1,5,2,3,6,9,5,1,2,3,1,2,3,2,1,2,1]
b = [1,3,1,1,2,1,1,1,4,4,4,2,2,2,4,1,1,4,1,2]x = range(11, 31)my_font = font_manager.FontProperties(fname=r"C:\Windows\Fonts\SIMLI.TTF", size=12)# 设置图形大小
plt.figure(figsize=(15, 8), dpi=80)# plot 增加 label 和 plt.legend() 可以显示tuli
# plot 增加 color 可以修改 线条颜色
# linestyle  线条风格  linestyle 也适用于绘制网格
# - 实线  -- 虚线  -. 点划线  : 点虚线  "" 留空或者空格无线条
# linewidth  线条粗细
# alpha  透明度
plt.plot(x, a, label="自己", color="orange", linestyle="--", linewidth=3, alpha=0.3)
plt.plot(x, b, label="同桌", color="#FF69B4", linestyle="-.",linewidth=6, alpha=0.6)# 设置x刻度
xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x, xtick_labels, fontproperties=my_font)
plt.yticks(range(0,11))# 绘制网格 linestyle 也适用于绘制网格
plt.grid(alpha=0.6, linestyle="--")# 添加图例  prop 显示中文,只有这里是 prop其他地方都是 fontproperties
# loc="upper left" 参数可以修改 图例位置 默认是右上
plt.legend(prop=my_font,loc="upper left")plt.show()

8、标记最高(低)点,添加水印

其他 图像添加image水印、图像添加背景 可 参考 https://zhuanlan.zhihu.com/p/390880393

from matplotlib import pyplot as plt
from matplotlib import font_manager"""
a 是自己  b 是同桌
x 轴是年龄  y 轴是女朋友的数量
"""
a = [1,0,2,1,5,2,3,6,9,5,1,2,3,1,2,3,2,1,2,1]
b = [1,3,1,1,2,1,1,1,4,4,4,2,2,2,4,1,1,4,1,2]x = range(11, 31)my_font = font_manager.FontProperties(fname=r"C:\Windows\Fonts\SIMLI.TTF", size=12)# 设置图形大小
plt.figure(figsize=(15, 8), dpi=80)# plot 增加 label 和 plt.legend() 可以显示tuli
# plot 增加 color 可以修改 线条颜色
# linestyle  线条风格  linestyle 也适用于绘制网格
# - 实线  -- 虚线  -. 点划线  : 点虚线  "" 留空或者空格无线条
# linewidth  线条粗细
# alpha  透明度
plt.plot(x, a, label="自己", color="orange", linestyle="--", linewidth=3, alpha=0.3)
plt.plot(x, b, label="同桌", color="#FF69B4", linestyle="-.",linewidth=6, alpha=0.6)# 设置x刻度
xtick_labels = ["{}岁".format(i) for i in x]
plt.xticks(x, xtick_labels, fontproperties=my_font)
plt.yticks(range(0,11))# 标价最高点, 标记最高点;注意:x轴和y轴的索引必须相对应
# mark表示圆圈标记,edgecolors表示圆圈的颜色,s表示标记点的大小
# plt.scatter(x[8], a[8], color='b')
plt.scatter(x[8], a[8], color='b', marker='o', edgecolors='r', s=300)# 添加文本水印  其他 图像添加image水印 图像添加背景 可 参考 https://zhuanlan.zhihu.com/p/390880393
plt.text(x=15,  #文本x轴坐标y=5,  #文本y轴坐标s='hello world',  #文本内容rotation=15,  #文字旋转角度ha='center',  #x=2.2是文字的左端位置,可选'center', 'right', 'left'va='center',  #y=8是文字的低端位置,可选'center', 'top', 'bottom', 'baseline', 'center_baseline'alpha=0.5,fontdict=dict(fontsize=32,color='grey',family='monospace',  #字体,可选'serif', 'sans-serif', 'cursive', 'fantasy', 'monospace'weight='light',  #磅值,可选'light', 'normal', 'medium', 'semibold', 'bold', 'heavy', 'black')  #字体属性设置
)# 绘制网格 linestyle 也适用于绘制网格
plt.grid(alpha=0.6, linestyle="--")# 添加图例  prop 显示中文,只有这里是 prop其他地方都是 fontproperties
# loc="upper left" 参数可以修改 图例位置 默认是右上
plt.legend(prop=my_font,loc="upper left")plt.show()

https://www.bilibili.com/video/BV1hx411d7jb?p=3
https://www.bilibili.com/video/BV1hx411d7jb?p=4
https://www.bilibili.com/video/BV1hx411d7jb?p=5
https://www.bilibili.com/video/BV1hx411d7jb?p=6 设置中文显示
https://www.bilibili.com/video/BV1hx411d7jb?p=7
https://www.bilibili.com/video/BV1hx411d7jb?p=8

python3-matplotlib基本使用(以折线图为例)相关推荐

  1. python3+matplotlib绘制双轴折线图(两种方法)

    Background 这里提供两种方法,一种是基于pandas,另一种是基于twinx. 1.先看最终效果图 pandas twinx 2.源码 import pandas as pd import ...

  2. python使用matplotlib可视化堆积的折线图、使用stackplot函数可视化堆积的折线图、不同数据在垂直方向堆叠

    python使用matplotlib可视化堆积的折线图.使用stackplot函数可视化堆积的折线图.不同数据在垂直方向堆叠 目录

  3. 数据分析之matplotlib(以折线图为例)

    一.设置图形大小(画布大小) 画任何图像都可以先对画布大小进行选择先,实例如下: from matplotlib import pyplot as plt fig = plt.figure(figsi ...

  4. python matplotlib绘制多条折线图

    python matplotlib绘制多条折线图 代码 import matplotlib.pyplot as pltx = [6, 24, 48, 72] y1 = [87, 174, 225, 2 ...

  5. python 柱状图和折线图放在一起_Python matplotlib:matplotlib绘制——柱状图和折线图的组合...

    Python matplotlib:使用matplotlib绘制--柱状图和折线图的组合. 废话不多说,直接上效果图和代码. 代码如下: #柱状图 import numpy as np import ...

  6. 数据分析之Matplotlib(二)折线图(plot)

    Matplotlib能够绘制折线图.散点图.柱状图.直方图.饼图等. 折线图: plt.plot(),表示趋势 散点图: plt.scatter(),表示变量与变量之间的关系 柱状图: plt.bar ...

  7. python生成折线图怎么对特定点做颜色_python使用matplotlib绘制简单的折线图和散点图...

    生成数据 数据可视化 数据可视化指的是通过可视化表示来探索数据,它与数据挖掘机密相关. 安装matplotlib 请访问https://pypi.python.org/pypi/matplotlib/ ...

  8. Matplotlib基础绘图功能 — 以折线图为例

    1 完善原始折线图 - 给图形添加辅助功能 为了更好地理解所有基础绘图功能,通过天气温度变化的绘图来融合所有的基础API使用 需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在1 ...

  9. python笔记4(矩阵和随机数 matplotlib绘图基础散点图折线图柱状图)

    记录python听课笔记 文章目录 记录python听课笔记 一,矩阵 1.1矩阵创建 1.2矩阵运算 矩阵的乘法 矩阵转置T 矩阵求逆I 二,随机数 2.1随机数模块 numpy.random 2. ...

最新文章

  1. mysql集群安装配置
  2. NullPointerException异常的原因及java异常??
  3. 如何通过牛顿方法解决Logistic回归问题 By 机器之心2017年8月09日 16:30 本文介绍了牛顿方法(Newton's Method),以及如何用它来解决 logistic 回归。log
  4. java的mock测试框架
  5. oracle中闪回和回滚,oracle闪回操作详解
  6. C# linq Expression left join如何使用
  7. idea 利用vue.js插件创建vue初始化项目
  8. java excel 兼容问题_java--POI解析excel兼容性问题
  9. 参数 中_理解JavaScript中函数的参数
  10. Python画各种 3D 图形Matplotlib库
  11. 用c#控制台模拟双色球随机选
  12. 2019手机号码正则表达式
  13. ribbon重试机制
  14. 从0开始学Python,0基础小白
  15. Spring+Netty4实现的简单通信框架
  16. FPGA 实现SVPWM调制
  17. 设计的概念以及含义_什么是设计概念? 以及为什么您应该始终从一个开始
  18. 摩尔定律即将走向终结?对未来更广阔世界影响的55个预测!
  19. PMP考试中常见的翻译问题
  20. 安装angular脚手架

热门文章

  1. flink连接kafka整合hbase,scala
  2. Ubuntu14.04 Apollo 3.5安装
  3. SaaS服务的私有化部署,这样做最高效|云效工程师指北
  4. 揭晓阿里云神龙团队拿下TPCx-BB排名第一的背后技术
  5. 从操作系统层面分析Java IO演进之路
  6. 排查指南 | 当 mPaaS 小程序提示“应用更新错误(1001)”时
  7. 如何优雅地在云上“摆摊” 直播带货,这些技术很重要
  8. AnalyticDB for MySQL技术架构解析
  9. 源码|详解分布式事务之 Seata-Client 原理及流程
  10. 2018最佳GAN论文回顾(下)