python--matplotlib库\numpy库

部署运行你感兴趣的模型镜像

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

在IDLE中的代码

     

结果显示

绘制散点图--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

np.max

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 安装 Python-MatplotlibNumpyPython-Devel 的方法 对于基于 Debian 或 Ubuntu 的 Linux 发行版,可以使用 `apt` 命令来安装所需的 Python 开发工具。 以下是具体的命令: #### 安装 Matplotlib 要安装 `python-matplotlib`,可以通过以下命令完成: ```bash sudo apt update sudo apt install python3-matplotlib ``` #### 安装 Numpy 为了安装 `numpy`,可以运行以下命令: ```bash sudo apt install python3-numpy ``` #### 安装 Python 开发 (`python-devel`) 在某些情况下,可能还需要安装 Python开发以便支持编译其他扩展模块。对应的包名通常是 `python3-dev`,因此可以运行以下命令进行安装: ```bash sudo apt install python3-dev ``` 以上三个步骤分别完成了所需组件的安装[^5]。 如果遇到任何依赖项问题,建议先更新系统的软件源并修复损坏的依赖关系: ```bash sudo apt --fix-broken install sudo apt update && sudo apt upgrade ``` 此外,在网络条件允许的情况下,也可以考虑通过国内镜像站点加速安装过程,例如清华大学开源镜像站提供的 PyPI 镜像服务[^2]。 --- ### 注意事项 1. 如果目标环境中的默认 Python 版本为 Python 2,则需要显式指定版本号(如 `python3-*`),以确保安装的是适用于 Python 3 的。 2. 对于较新的发行版,默认可能会提供更高版本的文件;而对于老旧系统,可能需要手动下载对应版本的 `.tar.gz` 文件并编译安装[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值