【人工智能】——matplotlib教程

文章目录

1.matplotlib简介

matplotlib 是一个用于创建二维图表和数据可视化的 Python 库,它提供了一种类似于 MATLAB 的绘图接口。matplotlib 可以用来绘制线图、散点图、柱状图、饼图等各种类型的图表,并且支持对图表的各种属性进行自定义设置,以及添加文本、注释、图例等元素。

我们可以通过指令来下载:pip install matplotlib

我么可以这样导入matplotlib模块:import matplotlib.pyplot as plt

图形的绘制流程:

第一步:创建画布plt.figure里面有两个参数,一个是figsize指定画布的大小(长和宽),一个是dpi指定画布的清新度

第二步:绘制图像plt.plot(x, y)默认是折线图

第三步:显示图像plt.show()

示例:显示上海一周的天气情况

2.基本绘图功能

2.1给图形添加辅助功能

示例:有标题、x轴名称、y轴名称

python 复制代码
import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif']=['SimHei']    # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False    # 用来显示负号
#0.准备数据
x = range(60)
y = [random.uniform(15, 18) for i in x] #生成60个15-18之间的浮点数
#1.创建画布
plt.figure(figsize=(20, 8), dpi=100)
#2.绘制图像
plt.plot(x, y)
#2.1添加xy轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
#2.2修改xy轴坐标刻度显示,要求间隔都是5
plt.xticks(x[::5], x_ticks_label[::5]) #坐标刻度不可以直接通过字符串进行修改,即不可以去掉前面的那一串
plt.yticks(y_ticks[::5])
#3.图像显示
plt.show()

添加网格显示:plt.grid(True, linestyle="--", alpha=0.5)alpha表示透明度

添加标题、x、y轴描述信息

python 复制代码
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点-12点某城市温度变化图", fontsize=20) 

fontsize是为了可以让标题的字体更大一些

图像的保存 plt.savefig("url")url是保存的路径;
注意:图像保存要在show之前。plt.show()会释放figure资源。

完整代码:

python 复制代码
import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif']=['SimHei']    # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False    # 用来显示负号
#0.准备数据
x = range(60)
y = [random.uniform(15, 18) for i in x] #生成60个15-18之间的浮点数
#1.创建画布
plt.figure(figsize=(20, 8), dpi=100)
#2.绘制图像
plt.plot(x, y)
#2.1添加xy轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
#2.2修改xy轴坐标刻度显示,要求间隔都是5
plt.xticks(x[::5], x_ticks_label[::5]) #坐标刻度不可以直接通过字符串进行修改,即不可以去掉前面的那一串
plt.yticks(y_ticks[::5])
#2.3添加网格显示
plt.grid(True, linestyle="--", alpha=0.5)
#2.4添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点-12点某城市温度变化图", fontsize=20) 
#2.5图像保存
plt.savefig("./test.png")
#3.图像显示
plt.show()

2.2在一个坐标系中绘制多个图像

方法:多次plot

示例:我们在添加一个城市的温度变化

python 复制代码
import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif']=['SimHei']    # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False    # 用来显示负号
#0.准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x] #生成60个15-18之间的浮点数
y_beijing = [random.uniform(1, 3) for i in x]
#1.创建画布
plt.figure(figsize=(20, 8), dpi=100)
#2.绘制图像
plt.plot(x, y_shanghai, label="上海")
plt.plot(x, y_beijing, color="r", linestyle="--", label="北京")
#2.1添加xy轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
#2.2修改xy轴坐标刻度显示,要求间隔都是5
plt.xticks(x[::5], x_ticks_label[::5]) #坐标刻度不可以直接通过字符串进行修改,即不可以去掉前面的那一串
plt.yticks(y_ticks[::5])
#2.3添加网格显示
plt.grid(True, linestyle="--", alpha=0.5)
#2.4添加描述信息
plt.xlabel("时间")
plt.ylabel("温度")
plt.title("中午11点-12点某城市温度变化图", fontsize=20) 
#2.5图像保存
plt.savefig("./test.png")
#2.6显示图例
plt.legend(loc="best")
#3.图像显示
plt.show()

图片风格:

显示图例:plt.legend(loc="best")参数如下:

2.3多个坐标系显示图像

方法:通过使用plt.subplots()

python 复制代码
plt.subplots(nrow=,ncol=)

nrows,ncols表示几行几列,例如我们要绘制两个图像,就是nrows=1,ncols=2

他的返回值有两个:

  1. fig:图对象
  2. axes:返回相应数量的坐标系
python 复制代码
import matplotlib.pyplot as plt
import random
plt.rcParams['font.sans-serif']=['SimHei']    # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False    # 用来显示负号
#0.准备数据
x = range(60)
y_shanghai = [random.uniform(15, 18) for i in x] #生成60个15-18之间的浮点数
y_beijing = [random.uniform(1, 3) for i in x]
#1.创建画布
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(20,8), dpi=100)
#2.绘制图像
axes[0].plot(x, y_shanghai, label="上海")
axes[1].plot(x, y_beijing, color="r", linestyle="--", label="北京")
#2.1添加xy轴刻度
x_ticks_label = ["11点{}分".format(i) for i in x]
y_ticks = range(40)
#2.2修改xy轴坐标刻度显示,要求间隔都是5
axes[0].set_xticks(x[::5])
axes[0].set_yticks(y_ticks[::5])
axes[0].set_xticklabels(x_ticks_label[::5]) #有字符串的刻度必须要使用set_xticklabels
axes[1].set_xticks(x[::5])
axes[1].set_yticks(y_ticks[::5])
axes[1].set_xticklabels(x_ticks_label[::5]) #有字符串的刻度必须要使用set_xticklabels
#2.3添加网格显示
axes[0].grid(True, linestyle="-", alpha=0.5)
axes[1].grid(True, linestyle="--", alpha=0.5)
#2.4添加描述信息
axes[0].set_xlabel("时间")
axes[0].set_ylabel("温度")
axes[0].set_title("中午11点-12点上海温度变化图", fontsize=20) 
axes[1].set_xlabel("时间")
axes[1].set_ylabel("温度")
axes[1].set_title("中午11点-12点北京温度变化图", fontsize=20) 
#2.5图像保存
plt.savefig("./test.png")
#2.6显示图例
axes[0].legend(loc="best")
axes[1].legend(loc="best")
#3.图像显示
plt.show()

3.常见图像绘制

matplotlib可以绘制折线图、散点图、直方图、饼图等等。

折线图:plt.plot(x, y)

散点图:plt.scatter(x, y)

柱状图:plt.bar(x, width, align="center", color)x表示传入的数据,width表示柱状图的宽度,align表示每个柱状图的对齐方式,colors表示每个柱状图的颜色

直方图:plt.hist(x, bins=None)bins表示组距

饼图:plt.pie(x, labels=,autopct=,color)labels表示每部分的名称,autopct表示占比显示指定,colors表示每部分的颜色

示例:散点图的绘制(房屋面积与价格的关系)

相关推荐
聆风吟º5 分钟前
CANN hccl 深度解析:异构计算集群通信库的跨节点通信与资源管控实现逻辑
人工智能·wpf·transformer·cann
狸奴算君12 分钟前
告别机械回复:三步微调AI模型,打造会“读心”的智能客服
人工智能
七夜zippoe14 分钟前
脉向AI|当豆包手机遭遇“全网封杀“:GUI Agent是通向AGI的必经之路吗?
人工智能·ai·智能手机·agent·gui
木非哲15 分钟前
机器学习--随机森林--从一棵树的直觉到一片林的哲学
人工智能·随机森林·机器学习
神的泪水18 分钟前
CANN 系列底层篇:基于 shmem 实现 NPU 设备内存的高效共享
人工智能
皮卡丘不断更20 分钟前
手搓本地 RAG:我用 Python 和 Spring Boot 给 AI 装上了“实时代码监控”
人工智能·spring boot·python·ai编程
浪子小院30 分钟前
ModelEngine 智能体全流程开发实战:从 0 到 1 搭建多协作办公助手
大数据·人工智能
程序员打怪兽34 分钟前
详解YOLOv8网络结构
人工智能·深度学习
Yuer202534 分钟前
全国首例“AI 幻觉”侵权案判了:这不是 AI 准不准的问题,而是谁该为 AI 负责
人工智能·edca os·可控ai
一切尽在,你来1 小时前
1.1 AI大模型应用开发和Langchain的关系
人工智能·langchain