Matplotlib用法使用、Matplotlib绘图作图画图

一、Matplotlib

Matplotlib:专门用于开发2D或3D图表,以渐进、交互式方式实现数据可视化

可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法

  • 能将数据进行可视化,更直观的呈现
  • 使数据更加客观、更具说服力

二、图形绘制函数说明

安装命令
pip:pip install matplotlib
conda:conda install matplotlib
  • 导包:matplotlib.pytplot包含了一系列类似于matlab的画图函数
  • 创建画布:plt.figure(figsize=(),dpi=),返回fig对象
    • figsize:指定图的长宽
    • dpi:图像的清晰度
  • 绘制折线图:plt.plot(x, y)
  • 自定义刻度
    • x轴:plt.xticks(x, **kwargs),x为要显示的刻度值
    • y轴:plt.yticks(y, **kwargs)
  • 添加网格:plt.grid(True, linestyle='--', alpha=0.5),可更清楚观察图像对应值,alpha为网格粗细,范围0-1
  • 描述信息
    • x轴:plt.xlabel("x轴信息")
    • y轴:plt.ylabel("y轴信息")
    • 标题:plt.title("图像标题",fontsize='20'),fontsize为字体大小
  • 显示图例:plt.legend(loc="best"),注:须在plt.plot()中设置一个label,若不设置,没法显示
  • 多个坐标系显示
    • plt.subplots(nrows=, ncols=)
  • 保存:plt.savefig("路径") ,将图像保存到指定路径
  • 显示图像:plt.show(),plt.show()会释放figure资源,如在显示图像之后保存图片将只能保存空图片

简单演示如下

import matplotlib.pyplot as plt
plt.figure(figsize=(5, 3), dpi=100)   # 创建画布
plt.plot([1, 2, 3, 4, 5, 6 ,7], [16,18,17,13,11,11,13])   # 绘制折线图
plt.show()   # 显示图像

三、图像添加辅助功能信息

import matplotlib.pyplot as plt
import random
# 中文显示问题
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]   # 设置显示中文字体
mpl.rcParams["axes.unicode_minus"] = False   # 设置正常显示符号

# 画出温度变化图
# 数据准备
x = range(0, 60)   # 随机生成[0, 50)范围内步长为1的整数列表
y = [random.uniform(13, 20) for i in x]   # random.uniform():随机生成13-20范围内的浮点数

plt.figure(figsize=(15, 5), dpi=80)   # 创建画布
plt.plot(x, y)   # 绘制折线图

x_ticks_label = ["20时{}分".format(i) for i in x]   # 构建x轴刻度标签
# y_ticks = range(40)   # 构建y轴刻度

# 修改x,y轴坐标的刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
# plt.yticks(y_ticks[::1])

plt.grid(True, linestyle='--', alpha=0.5)   # 添加网格

# 描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("20:00-21:00间温度变化图", fontsize=20)

plt.savefig("./zhangshu.jpg")  # 保存至指定位置
plt.show()  # 显示图像

输出如下

指定文件夹内新增图像文件

四、一个坐标系绘制多个图像

只需多次使用plot,其中color及linestyle可取值如下

颜色字符风格字符
r 红色- 实线
g 绿色- - 虚线
b 蓝色-. 点划线
w 白色: 点虚线
c 青色' ' 留空、空格
m 洋红
y 黄色
k 黑色

显示图例plt.legend(loc='best')或 plt.legend(loc=0),另需在plot中设置label,loc可取值如下

位置字符位置代码
'best'0
'upper right'1
'upper left'2
'lower left'3
'lower right'4
'right'5
'center left'6
'center right'7
'lower center'8
'upper center'9
'center'10

举例如下

import matplotlib.pyplot as plt
import random

from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]   # 设置显示中文字体
mpl.rcParams["axes.unicode_minus"] = False   # 设置正常显示符号

# 画出温度变化图
# 数据准备
x = range(0, 60)   # 随机生成[0, 50)范围内步长为1的整数列表
y = [random.uniform(13, 20) for i in x]   # random.uniform():随机生成13-20范围内的浮点数
yy = [random.uniform(5, 17) for i in x]   # random.uniform():随机生成13-20范围内的浮点数

plt.figure(figsize=(15, 5), dpi=80)   # 创建画布
plt.plot(x, y, color='y', linestyle='-.',label='赣州')   # 绘制折线图,点划线
plt.plot(x, yy, color='r', linestyle='--', label='樟树')   # 多次plot绘制多个折线图,虚线

x_ticks_label = ["20时{}分".format(i) for i in x]   # 构建x轴刻度标签
# y_ticks = range(40)   # 构建y轴刻度

# 修改x,y轴坐标的刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
# plt.yticks(y_ticks[::1])

plt.grid(True, linestyle='-', alpha=0.9)   # 添加网格
plt.legend(loc=0)   # 显示图例

# 描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("20:00-21:00间温度变化图", fontsize=18)

plt.savefig("./temperature.jpg")  # 保存至指定位置
plt.show()  # 显示图像

结果如下

五、多个坐标系绘制多个图像

通过subplots函数实现

  • matplotlib.pyplot.subplots(nrows=1, ncols=1, **fig_kw):创建一个带有多个axes(坐标系/绘图区)的图 
    • nrows,ncols:设置有几行几列坐标系
    • 返回图对象fig及相应数量的坐标系axes
    • plt.函数名()相当于面向过程的画图方法,axes.set_方法名()相当于面向对象的画图方法

代码演示如下

# 数据准备
x = range(24)
y_zhshu = [random.uniform(5, 15) for i in x]
y_ganzh = [random.uniform(10, 20) for i in x]
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(15, 5), dpi=100)   # 创建画布

# 绘制图像
axes[0].plot(x, y_zhshu, color="g", linestyle=":",label="樟树")
axes[1].plot(x, y_ganzh, color="r", linestyle="-.", label="赣州")

# 构造x,y轴刻度标签
x_ticks_label = ["{}:00".format(i) for i in x]
# y_ticks = range(40)

# 刻度显示
axes[0].set_xticks(x[::2])
# axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::2])
axes[1].set_xticks(x[::2])
# axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::2])

# 添加网格显示
axes[0].grid(True, linestyle="--", alpha=0.2)
axes[1].grid(True, linestyle="-.", alpha=0.5)

# 添加描述信息
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("24小时内樟树市温度变化图", fontsize=20)
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("24小时内赣州市温度变化图", fontsize=14)

# 添加图例
axes[0].legend(loc=0)
axes[1].legend(loc=0)
plt.savefig("./subplots.jpg")   # 图像保存
plt.show()   # 图像显示

输出结果

六、绘制数学函数图像

import numpy as np
x = np.linspace(-10, 10, 1000)
y = np.sin(x)
plt.figure(figsize=(9, 3), dpi=100)
plt.plot(x, y, color='y', linestyle='-.')
plt.grid(linestyle='--')
plt.show()

 结果如下

matplotlib官网:https://matplotlib.org/stable/ 

学习导航:http://xqnav.top/

  • 4
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

learning-striving

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值