IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> python matplotlib学习笔记 -> 正文阅读

[人工智能]python matplotlib学习笔记

matplotlib 可以完成各种绘图,使用该库首先要导入 pyplot 库。

import matplotlib.pyplot as plt
from matplotlib import pyplot as plt   # 两种方法等效

代码风格

有两种风格完成图的绘制,一种是对象导向(OO)风格。这种风格适合于复杂绘图,代码可以被重用。

fig, ax = plt.subplots(figsize=(5, 2.7), layout='constrained')
ax.plot(x, x, label='linear')  # Plot some data on the axes.
ax.set_xlabel('x label')  # Add an x-label to the axes.
ax.set_ylabel('y label')  # Add a y-label to the axes.
ax.set_title("Simple Plot")  # Add a title to the axes.
ax.legend();  # Add a legend.

还有一种是 pyplot 风格。这种风格适合于快速绘图。

plt.figure(figsize=(5, 2.7), layout='constrained')
plt.plot(x, x, label='linear')  # Plot some data on the (implicit) axes.
plt.xlabel('x label')
plt.ylabel('y label')
plt.title("Simple Plot")
plt.legend();

figure 是一张画布,上面可以有各种各样的元素 axes,比如包含轴、线等。在第一种风格中,subplots() 方法创建了一张图,画布赋值给 fig,各种元素赋值给 ax

二维绘图

除了能够绘制各种图形之外,同时也可以美化显示方式。

图形

下面介绍了绘制折线图、柱形图、饼状图等常见图形的方法。

折线图

plot() 方法可以绘制折线图。该方法传入一个列表即可完成折线图绘制,认为这个列表值为 y 值,x 值从 0 开始递增。如果需要自定义 x 值,传入两个列表即可,第一个参数列表为 x 值,第二个参数列表为 y 值。

plt.plot([1, 3, 2, 4])
plt.plot([2, 3, 4, 5], [1, 3, 2, 4])

柱形图

bar() 方法用于绘制柱形图。

plt.bar([1, 2, 3], [3, 5, 2])

散点图

scatter() 方法用于绘制散点图。

x = np.random.ranf(1000)
y = np.random.ranf(1000)
plt.scatter(x, y)

饼状图

pie() 方法用于绘制饼状图。

plt.pie([2, 3, 5])

等高线图

contourf() 方法用于绘制等高线图。

x = np.linspace(-5, 5, 500)
y = np.linspace(-5, 5, 500)
X, Y = np.meshgrid(x, y)
Z = (1 - X / 2 + X ** 3 + Y ** 4) * np.exp(-X ** 2 - Y ** 2)
plt.contourf(X, Y, Z)

量场图

quiver() 方法用于绘制量场图,由向量组成的图像。

x, y = np.mgrid[0: 10, 0: 10]
plt.quiver(x, y)

样式

上文列举了绘制各种类型图形的方法,但都不够美观,可以通过设置各种参数让图形变得更加美观。

线性颜色

colorc 参数设置线性颜色,其输入可以是颜色的英文名或字母缩写,也可以是十六进制数。

plt.plot(x, y, color='r')
plt.plot(x, y, c='red')
plt.plot(x, y, c='#FF0000')

常见的颜色如下表。

符号颜色
b蓝色
g绿色
r红色
c蓝绿色
m品红色
y黄色
k黑色
w白色

线性样式

linestylels 设置线性样式。

plt.plot(x, y, linestyle='--')

常见的线性样式如下表。

符号样式
-实线
--虚线
-.虚电线
:点线

标记点

marker 设置标记点样式。

plt.plot(x, y, marker='s')

常见的标记点样式如下表。

符号样式
.
,像素值
o圆形
s正方形
p五边形
hH六边形
dD菱形
+加号形
x叉形
*星形
v^<>三角形
1234星形
|_线形

颜色、标记点、线

通过设定格式字符串的形式可以同时设定颜色、标记点和线的样式,将字符串作为第三个参数即可。

plt.plot(x, y, 'or--')
plt.plot(x, y, 'r--o')

这个例子设计了圆形的标记点、红色虚线。三者顺序部分先后。

透明度

alpha 参数可以设置线性的透明度,值从 0 - 1,值越小越透明。

x = [2, 3, 4, 5]
y = [3, 1, 2, 4]
plt.plot(x, y, alpha=0.8)

线宽

linewidthlw 参数设置线的宽度,值要求是一个浮点数。

plt.plot(x, y, lw='3')

规范绘图

上文通过 plt 的方法快速绘制了各种图形,但更建议使用 OO 风格绘制图形。使用此种方法,首先要通过 figure() 方法和 subplots() 方法创建完整的图像。

fig, ax = plt.subplots()

可以为图增加图标题、轴名称、图例等。

axes.plot(x, x**2, color='red', marker='+')
axes.plot(x, x**3, linewidth=0.25, linestyle='--')
axes.set_xlabel('x')  # x轴名称
axes.set_ylabel('y')
axes.set_title('title')  # 图形名称

axes.legend(["y = x**2", "y = x**3"], loc=0)  # 图例

loc 可取 1、2、3、4,分别表示右上角、左上角、左下角、右下角,还可取 0,表示自适应。

还可以指定网格和轴范围。

axes.grid(True)
axes.set_xlim([2, 5])
axes.set_ylim([0, 60])

为了更好地理解图像,可以利用 text() 方法在图像上进行标注,前两个参数分表表示标注位置,第三个参数表示标注内容。还可以通过 fontsizehorizontalalignment 参数设置文字大小和对齐方式,annotate() 方法可以添加箭头。

绘制子图

subplots() 方法可以创建子图,通过 axes 下标形式选定子图。

fig, axes = plt.subplots(nrows=1, ncols=2)  # 子图为 1 行,2 列
axes[0].plot(x, y)
axes[1].plot(y, x)

还可以通过使用 add_subplot() 方法来添加子图。

fig = plt.figure()
ax1 = fig.add_subplot(1, 2, 1)
ax2 = fig.add_subplot(1, 2, 2)

图形位置

当需要自定义图形位置,使用 add_axes() 方法完成。

fig = plt.figure()
axes = fig.add_axes([0.5, 0.5, 0.8, 0.8])
axes.plot(x, y, 'r')

该方法也可以添加多个图。

fig = plt.figure()
axes1 = fig.add_axes([0.1, 0.1, 0.8, 0.8])
axes2 = fig.add_axes([0.2, 0.5, 0.4, 0.3])
axes1.plot(x, y, 'r')
axes2.plot(y, x, 'g')

三维绘图

三维绘图同样需要导入 pyplot 模块,此外还需要用到 mpl_toolkits.mplot3d 模块,绘图主要使用 Axes3D() 方法。

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

scatter() 方法用于绘制散点图,分别输入点的三维坐标值。plot() 方法用于绘制折线图。bar() 方法用于绘制柱状图。

fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(x, y, z)

fig = plt.figure()
ax = Axes3D(fig)
ax.plot(x, y, z)

plot_surface() 方法用于绘制曲面图。

fig = plt.figure()
ax = Axes3D(fig)

X = np.arange(-2, 2, 0.1)
Y = np.arange(-2, 2, 0.1)
X, Y = np.meshgrid(X, Y)
Z = np.sqrt(X ** 2 + Y ** 2)

ax.plot_surface(X, Y, Z, cmap=plt.cm.winter)

cmap 参数表示配色方案。

除了用 Axes3D() 声明三维图形外,也可以用 projection='3d' 声明三维图形。

fig = plt.figure(figsize=(14, 6))
ax = fig.add_subplot(1, 2, 1, projection='3d')
ax.plot_surface(X, Y, Z, cmap=plt.cm.winter)
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-12-23 15:46:04  更:2021-12-23 15:47:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 4:48:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码