一、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()   # 显示图像

python matplotlib 画布 matplotlib设置画布大小_python

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

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()  # 显示图像

输出如下

python matplotlib 画布 matplotlib设置画布大小_绘图_02

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

python matplotlib 画布 matplotlib设置画布大小_显示图像_03

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

只需多次使用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()  # 显示图像

结果如下

python matplotlib 画布 matplotlib设置画布大小_matplotlib_04

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

通过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()   # 图像显示

输出结果

python matplotlib 画布 matplotlib设置画布大小_python_05

六、绘制数学函数图像

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()

 结果如下

python matplotlib 画布 matplotlib设置画布大小_matplotlib_06

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

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