matplotlib
matplotlib.pyplot
matplotlib.pyplot 【记忆:plot是图标相关;lib是library的缩写“图书馆”,或者翻译成“库”】是 Matplotlib 库中的一个模块,通常用于绘制各种类型的图形。在数据可视化中,它提供大量的绘图功能,类似于 MATLAB 的绘图方式,用户可以使用简单的命令来创建复杂的图形。
plt.tight_layout()
自动调整子图布局
plt.figure(figuresize)
plt.figure(figsize=(10, 8)) 是 Matplotlib 中用来创建新图形窗口的函数,figsize 参数用于设置图形窗口的大小。
plt.figure():该函数用于创建一个新的图形(figure)对象,所有的绘图都会在此对象上进行。figsize:此参数接受一个元组,表示图形的宽度和高度。单位是英寸(inches)。- 图形窗口的大小可以根据数据的复杂性和可视化的需求进行调整,较大的图形可以更清晰地展示数据。
plt.subplot()
plt.subplot() 是 Matplotlib 库中用于创建子图的函数。它可以在一个图形窗口中绘制多个子图,用于比较不同的数据可视化。
在一个坐标系中生成多个图像;在一个窗口中生成多个图像;公用坐标系
基本语法:
plt.subplot(nrows, ncols, index)
nrows:子图的行数。ncols:子图的列数。index:当前子图的位置,从 1 开始计算,按行优先的顺序。
示例1:--方法1,一遍一遍显示plt.subplot(i,j,x)
iXj为子图个数,也是子图布局格式。i是行数,j是列数。x显示当前是第几个子图(从1开始,不是从0开始)
先通过linspace生成100个0到10的随机数;然后基于x分别生成sin、cos、tan、log函数
代码
#%%
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,10,100)
y1= np.sin(x)
y2=np.cos(x)
y3=np.tan(x)
y4=np.log(x+1)
#创建一个2X2的子图
plt.figure(figsize=(10,8))
#第一个子图
plt.subplot(2,2,1)#四个图形,2行2列,第一个子图
plt.plot(x,y1,label='sin(x)',color='blue')
plt.title('Sine Function')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.legend()
#第二个子图
plt.subplot(2, 2, 2) # 2 行 2 列,第 2 个
plt.plot(x, y2, label='cos(x)', color='orange')
plt.title('Cosine Function')
plt.xlabel('x')
plt.ylabel('cos(x)')
plt.legend()
#第三个子图
plt.subplot(2, 2, 3) # 2 行 2 列,第 3 个
plt.plot(x, y3, label='tan(x)', color='green')
plt.title('Tangent Function')
plt.xlabel('x')
plt.ylabel('tan(x)')
plt.ylim(-10, 10) # 限制 y 轴的范围
plt.legend()
#第四个子图
plt.subplot(2, 2, 4) # 2 行 2 列,第 4 个
plt.plot(x, y4, label='log(x + 1)', color='red')
plt.title('Logarithm Function')
plt.xlabel('x')
plt.ylabel('log(x + 1)')
plt.legend()
#自动调整子图布局
plt.tight_layout()
# 显示图形
plt.show()
代码结果:

示例2--for loop
代码
#%%
# subplots
plt.subplot(3,1,1)
plt.plot(t[:nsmp], eta[:nsmp, 0])
plt.subplot(3,1,2)
plt.plot(t[:nsmp], eta[:nsmp, 5])
plt.subplot(3,1,3)
plt.plot(t[:nsmp], eta[:nsmp, 10])
plt.show()
#%%
# subplots with for-loop
j = 1
for i in range(0, eta.shape[1], 5):
plt.subplot(3,1,j)
plt.plot(t[:nsmp], eta[:nsmp, i])
j = j + 1
plt.show()
plt.plot()
使用前需要导入matplotlib模块,可以通过以下方式导入
import matplotlib.pyplot as plt
语法
plt.plot(x, y, **kwargs)
参数说明
- x:x 轴数据(列表或数组)。
- y:y 轴数据(列表或数组)。
- kwargs:可选参数,用于设置线条样式、颜色、标签等。
绘制折线图步骤
plt.plot(x,y)
plt.title('Sine wave')
plt.xlabel('x')
plt.ylabel('sin(x)')
plt.grid()#绘制折线图
plt.show()

结果显示

绘制散点图--plt.sactter(x,y)
import numpy as np
import matplotlib.pyplot as plt
#生成随机数据
x = np.random.rand(10)
y = np.random.rand(10)
#绘制散点图
plt.scatter(x,y)#生成散点图的函数格式
plt.title('Random Scatter Plot')
plt.xlabel('x-axis')
plt.ylabel('y-axis')
plt.grid()
plt.show()

绘制柱状图-plt.bar(x,y)
import numpy as np
import matplotlib.pyplot as plt
# 创建数据
categories = ['A', 'B', 'C', 'D']
values = [10, 15, 7, 10]
# 绘制柱状图
plt.bar(categories, values)#绘制柱状图函数指令
plt.title('Bar Chart')
plt.xlabel('Categories')
plt.ylabel('Values')
plt.show()

plt.pcolormesh()
plt.pcolormesh() 是 Matplotlib 中用于绘制伪彩色图(或热图)的函数。它通常用于可视化二维数组数据的强度或颜色分布。下面是使用 plt.pcolormesh() 的基本用法和示例。
1. 引入库
首先,确保你已经导入了 Matplotlib 和 NumPy:
import matplotlib.pyplot as plt
import numpy as np
2. 基本用法
plt.pcolormesh(X, Y, C, **kwargs) 的基本语法是:
- X:x 轴的坐标(可以是一个一维或二维数组)。
- Y:y 轴的坐标(可以是一个一维或二维数组)。
- C:用于确定颜色的二维数组。
- kwargs:可选参数,用于设置颜色图(colormap)、标题等。
3. 示例
3.1 简单示例
下面是一个简单的示例,创建一个伪彩色图:
# 创建网格数据
x = np.linspace(0, 10, 100)
y = np.linspace(0, 10, 100)
X, Y = np.meshgrid(x, y) # 创建网格
Z = np.sin(X) * np.cos(Y) # 创建 Z 数据
# 绘制伪彩色图
plt.pcolormesh(X, Y, Z, shading='auto') # shading='auto' 用于自动处理边缘情况
plt.colorbar() # 添加颜色条
plt.title('Pcolormesh Example')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()
3.2 自定义颜色图
你可以通过 cmap 参数来设置颜色图:
plt.pcolormesh(X, Y, Z, cmap='viridis', shading='auto') # 使用 Viridis 颜色图
plt.colorbar()
plt.title('Pcolormesh with Viridis colormap')
plt.show()
3.3 更改边界和间隔
如果你的数据有不同的间隔,可以自定义 X 和 Y 的边界:
x_edges = np.linspace(0, 10, 11) # x 轴边界
y_edges = np.linspace(0, 10, 11) # y 轴边界
Z = np.sin(np.outer(np.linspace(0, 10, 10), np.linspace(0, 10, 10))) # 计算 Z 数据
plt.pcolormesh(x_edges, y_edges, Z, shading='auto')
plt.colorbar()
plt.title('Pcolormesh with Edge Arrays')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()
4. 图例
plt.colorbar() 可以在图旁边添加图例,显示颜色到数值的对应关系。
np.meshgrid
np.meshgrid() 是 NumPy 中用于生成网格坐标矩阵的函数,常用于在二维或三维空间中创建自变量,以便进行函数计算或绘图。
1. 基本用法
np.meshgrid(*xi, indexing='xy') 的基本语法是:
- xi:一维数组或列表,代表每个维度的坐标。
- indexing:可选参数,决定返回的网格点的类型。'xy' 表示标准的矩阵索引,而 'ij' 表示以样式的方式生成网格(即使用笛卡尔积)。
2. 示例
2.1 生成简单的二维网格
以下是生成一个简单的二维网格的示例:
import numpy as np
# 定义 x 和 y 的取值范围
x = np.array([1, 2, 3])
y = np.array([4, 5])
# 生成网格
X, Y = np.meshgrid(x, y)
print("X:\n", X)
print("Y:\n", Y)
输出:
X:
[[1 2 3]
[1 2 3]]
Y:
[[4 4 4]
[5 5 5]]
在这个例子中,X 和 Y 生成了一个二维坐标网格。X 包含了 x 轴的值,而 Y 则包含了 y 轴的值。
2.2 生成更复杂的网格
下面是一个更复杂的例子,生成一个连续的坐标网格:
import numpy as np
import matplotlib.pyplot as plt
# 定义 x 和 y 的取值范围
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
# 生成网格
X, Y = np.meshgrid(x, y)
# 计算 Z 值
Z = np.sin(np.sqrt(X**2 + Y**2))
# 绘图
plt.pcolormesh(X, Y, Z, shading='auto')
plt.colorbar()
plt.title('Meshgrid Example: Z = sin(sqrt(X^2 + Y^2))')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.show()
在这个例子中,我们首先生成了 x 和 y 的连续取值,然后使用 np.meshgrid() 生成相应的 X 和 Y 网格坐标,最后计算 z 值并绘制了伪彩色图。
numpy
np.genfromtxt()
记忆:gen是英文generate的缩写gen;from来源;txt文本类型
基本语法
data = np.genfromtxt(filename, delimiter=',', dtype=None, encoding=None)
参数说明
- filename:要读取的文件名(可以是路径或 URL)。
- delimiter:用于分隔值的字符,默认为空格。
- dtype:数据类型,可以是字符串、整数或浮点数等。默认为
None,根据数据自动推断。 - encoding:如果文件中包含字符串数据,可以设置字符编码(如
'utf-8')。
np.genfromtxt 是 NumPy 库中的一个函数,主要用于从文本文件中加载数据,并能处理缺失值(在参数中通过通过 filling_values 参数设置【见示例】)。
示例:
np.random.rand()
np.random.rand() 可以用来生成[0,1)之间的一个或多个随机数数组,可以设置一个或多个维度参数来指定生成数组的形状。生成的随机数是均匀分布在 [0, 1) 区间的。
语法
np.random.rand():生成一个标量(0维数组)np.random.rand(n):生成一个形状为 (n,) 的一维数组np.random.rand(n, m):生成一个形状为 (n, m) 的二维数组np.random.rand(n, m, p):生成一个形状为 (n, m, p) 的三维数组- 以此类推,可以生成更高维的数组。
如何使用 np.random.rand()生成特定范围内的随机数?
线性转换。生成[a,b)[a,b)区间的随机数,可以使用以下公式:
random_number=a+(b−a)⋅np.random.rand()random_number=a+(b−a)⋅np.random.rand()
示例:生成[5,10)之间的随机数:
#%%
import numpy as np
import matplotlib.pyplot as plt
a=5
b=10
random_number=a+(b-a)*np.random.rand()
print(random_number)
np.linespace()
np.min()
找数组array中的最小值。
其实找出数组中的最值(最小值和最大值),可以使用 np.min() 和 np.max() 函数,或者使用数组对象的 .min() 和 .max() 方法。
”函数“和”数组对象“的区别在于:
- 使用函数时,你需要传递数组作为参数。
- 使用方法时,你是调用该方法在数组实例上。
示例:
import numpy as np
# 创建一个 NumPy 数组
array = np.array([3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5])
# 方法一:使用 NumPy 函数
min_value = np.min(array)
max_value = np.max(array)
print("最小值:", min_value) # 输出: 最小值: 1
print("最大值:", max_value) # 输出: 最大值: 9
# 方法二:使用数组对象的方法
min_value_method = array.min()
max_value_method = array.max()
print("最小值 (方法):", min_value_method) # 输出: 最小值 (方法): 1
print("最大值 (方法):", max_value_method) # 输出: 最大值 (方法): 9
1497

被折叠的 条评论
为什么被折叠?



