机器学习 | 掌握Matplotlib的可视化图表操作

Matplotlib是python的一个数据可视化库,用于创建静态、动态和交互式图表。它可以制作多种类型的图表,如折线图、散点图、柱状图、饼图、直方图、3D 图形等。以渐进、交互式方式实现数据可视化。当然博主也不能面面俱到的讲解到所有内容,详情请参考:官网

可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。将数据进行可视化,更直观的呈现。使数据更加客观、更具说服力。终端执行如下命令安装:

python 复制代码
pip install matplotlib -i https://pypi.mirrors.ustc.edu.cn/simple

使用Matplotlib画图可以参考如下步骤:

python 复制代码
# 导入matplotlib.pyplot模块
import matplotlib.pyplot as plt

# 图形绘制
plt.figure(figsize=(), dpi=) # 创建画布,figsize:图的长度;dpi:图的清晰度
plt.plot(x,y) # 绘制图像
plt.show() # 显示图像

基础折线显示:接下来我们工具Matplotlib画图步骤,使用jupyter notebook工具进行实现:

python 复制代码
import matplotlib.pyplot as plt

# 准备数据
x = range(60)
y = [random.uniform(15, 18) for i in x] # 生成一个长度为 60 的随机浮点数列表,用于模拟某个过程在 60 分钟内的变化情况。

# 创建画布
plt.figure(figsize=(20,4),dpi=100)

# 绘制图像
plt.plot(x, y)

#图像显示
plt.show()

自定义刻度:如果我们想给x和y轴添加自定义刻度的话,可以采用如下的方式进行:

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(60)
y = [random.uniform(15, 18) for i in x] # 生成一个长度为 60 的随机浮点数列表,用于模拟某个过程在 60 分钟内的变化情况。

# 创建画布
plt.figure(figsize=(20,4),dpi=100)

# 绘制图像
plt.plot(x, y)

# 添加 x,y轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
# 修改x,y轴坐标刻度显示
plt.xticks(x[::5], x_ticks_label[::5])
plt.yticks(y_ticks[::5])

#图像显示
plt.show()

添加网格显示: 可以采用如下的步骤:

python 复制代码
# 添加网格显示
plt.grid(True, linestyle = "--", alpha = 0.5) # linestyle 表示虚线 # alpha 表示透明度

添加描述信息:添加x轴、y轴描述信息及标题,通过fontsize参数可以修改图像中的字体大小

python 复制代码
# 添加描述信息
plt.xlabel("时间", fontsize=15)
plt.ylabel("温度", fontsize=15)
plt.title("中午11点-12点某城市温度变化", fontsize=20)

图像保存:如果想对图像进行保存的话,可以采用如下的操作进行:

python 复制代码
# 图像保存
plt.savefig("./test.png")

一个坐标轴绘制多个图像: 很简单,在准备多个数据之后绘制多次图像即可完成

python 复制代码
# 准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x] 
y_beijin = [random.uniform(1,3) for i in x]

# 创建画布
plt.figure(figsize=(20,4),dpi=100)

# 绘制图像
plt.plot(x, y_shanghai)
plt.plot(x, y_beijin)

设置图形风格:我们可以通过如下的变量来设置图像的风格:

颜色字符:

r(红色)、g(绿色)、b(蓝色)、w(白色)、c(青色)、m(养红)、y(黄色)、k(黑色)

风格字符:

-(实线)、--(虚线)、-.(点划线)、:(点虚线)、' '(空格)

python 复制代码
# 绘制图像
plt.plot(x, y_shanghai)
plt.plot(x, y_beijin, color='r', linestyle='--')

显示图例:通过显示图例将图形代表的含义表示出来:

python 复制代码
# 绘制图像
plt.plot(x, y_shanghai, label="上海")
plt.plot(x, y_beijin, color='r', linestyle='--', label="北京")

# 显示图例
plt.legend(loc="best")

当然图例的位置我们可以通过设置loc的值来进行改变:

| String | best | upper right | upper left | lower left | lower right | right | center left | center right | lower center | upper center | center |

Code 0 1 2 3 4 5 6 7 8 9 10

多个坐标系实现绘图:通过如下代码我们可以实现多个坐标轴实现绘图:

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(60)
y_shanghai = [random.uniform(15, 18) for i in x] 
y_beijin = [random.uniform(1,3) for i in x]

# 创建画布
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20, 4), dpi=100)
# 绘制图像
axes[0].plot(x, y_shanghai, label="上海")
axes[1].plot(x, y_beijin, color='r', linestyle='--', label="北京")

# 显示图例
axes[0].legend(loc=0)
axes[1].legend(loc=0)

# 添加 x,y轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
# 修改x,y轴坐标刻度显示 
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5])
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5])


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

# 添加描述信息
axes[0].set_xlabel("时间", fontsize=15)
axes[0].set_ylabel("温度", fontsize=15)
axes[0].set_title("中午11点-12点某城市温度变化", fontsize=20)
axes[1].set_xlabel("时间", fontsize=15)
axes[1].set_ylabel("温度", fontsize=15)
axes[1].set_title("中午11点-12点某城市温度变化", fontsize=20)

#图像显示
plt.show()

折线图实现:通过numpy实现折线图的方法:

python 复制代码
import matplotlib.pyplot as plt
import numpy as np

# 准备数据
x = np.linspace(-10, 10, 1000)
y = np.sin(x)

# 创建画布
plt.figure(figsize=(20, 4), dpi=100)

# 绘制图像
plt.plot(x, y)

# 添加网格显示
plt.grid()

# 显示图像
plt.show()

常见图形绘制:接下来就其他常见的图形进行一个简单的代码演示:

首先我们先导入我们的库,接下来借助matplotlib库来实现各种图形的绘制

python 复制代码
import matplotlib.pyplot as plt
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
python 复制代码
# 准备数据(散点图)
x = range(60)
y = [random.uniform(15, 18) for i in x] # 生成一个长度为 60 的随机浮点数列表,用于模拟某个过程在 60 分钟内的变化情况。
# 创建画布
plt.figure(figsize=(20,4),dpi=100)
# 绘制图像
plt.plot(x, y)
#图像显示
plt.show()
python 复制代码
# 准备数据(柱状图)
movie_name = ['雷神3','正义联盟','误杀','全球风暴','雷神3','正义联盟','误杀','全球风暴'] # 电影名字
x = range(len(movie_name)) # 恒坐标
y = [12,21,21,31,12,21,21,31]# 票房数据
# 创建画布
plt.figure(figsize=(20, 4), dpi=100)
# 绘制图像
plt.bar(x, y, color=['b','r','g','y','c','m','k','g'], width=0.4)
# x轴坐标显示
plt.xticks(x, movie_name)
# 添加网格
plt.grid(linestyle="--", alpha=0.8)
# 添加标题
plt.title("电影票房收入对比", fontsize=20)
# 图像显示
plt.show()
相关推荐
zh路西法20 小时前
【PACE】面向永磁同步电机PMSM 执行器的参数辨识与能耗感知强化学习 Sim-to-Real
python·cma-es·pmsm·sim-to-real·issac·pace
后台模板学习20 小时前
大模型 Prompt 工程在电商订单系统中的踩坑记录
java·python·prompt
2601_9679873721 小时前
如何运行 Python 代码
python·最佳实践·脚本文件·代码运行·交互式环境
WiKiLeaks_successor21 小时前
重构Time库的抽象设计
python·重构
AI源码21 小时前
基于 Python 的短视频用户行为分析系统
开发语言·python
第九序言T21 小时前
数据分析岗 Pandas 面试题 20 道(上):概念与读代码
python·数据分析·pandas·数据处理
Dmz丶21 小时前
前端转 AI 100 天 Day 37:Few-shot 与 CoT——让模型学会“推理”
python
孟健21 小时前
我用Grok Bot本地剪口播视频,3段提示词搞定气口切除、字幕与封面
人工智能·python·aigc
2601_966949651 天前
如何封装 qd.klines.batch(),让批量 K 线查询函数在多个策略中复用?
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
Highcharts.js1 天前
智能数据分析组件Orbit 正式发布与快速上手体验教程
前端·人工智能·信息可视化·数据分析系统·highcharts·orbit·智能可视化