Matplotlib画图相关代码

ops/2024/9/24 16:45:06/

绘制不同类型的线条 

import matplotlib.pyplot as plt
import numpy as npx = np.array([1, 2, 3])
y = np.array([2, 4, 6])# 不同线型的示例
plt.plot(y, marker='*', linestyle='-')   # 实线
plt.plot(y + 1, marker='o', linestyle='--')  # 虚线
plt.plot(y + 2, marker='x', linestyle='-.')  # 点划线
plt.plot(y + 3, marker='d', linestyle=':')   # 点线# 自定义线型
plt.plot(y + 4, marker='s', linestyle=(0, (5, 10)))  # 自定义:5个单位实线,10个单位空格plt.show()

添加中文

plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False   # 用来正常显示负号

创建多个子图

import matplotlib.pyplot as plt
import numpy as np# 生成从 0 到 10 的 100 个均匀间隔的数值,用于 x 轴
x = np.linspace(0, 10, 100)# 创建一个新的图形对象,设置图形的大小为 10x8 英寸
plt.figure(figsize=(10, 8))# 创建第一个子图,设置为 2 行 2 列的网格中的第 1 个子图
plt.subplot(2, 2, 1)  # 参数解释:2 行,2 列,第 1 个位置
plt.plot(x, np.sin(x))  # 绘制 sin(x) 函数的曲线
plt.title('Sin(x)')  # 设置第一个子图的标题为 "Sin(x)"# 创建第二个子图,设置为 2 行 2 列的网格中的第 2 个子图
plt.subplot(2, 2, 2)  # 参数解释:2 行,2 列,第 2 个位置
plt.plot(x, np.cos(x))  # 绘制 cos(x) 函数的曲线
plt.title('Cos(x)')  # 设置第二个子图的标题为 "Cos(x)"# 创建第三个子图,设置为 2 行 2 列的网格中的第 3 个子图
plt.subplot(2, 2, 3)  # 参数解释:2 行,2 列,第 3 个位置
plt.plot(x, np.tan(x))  # 绘制 tan(x) 函数的曲线
plt.title('Tan(x)')  # 设置第三个子图的标题为 "Tan(x)"# 创建第四个子图,设置为 2 行 2 列的网格中的第 4 个子图
plt.subplot(2, 2, 4)  # 参数解释:2 行,2 列,第 4 个位置
plt.plot(x, -np.sin(x))  # 绘制 -sin(x) 函数的曲线
plt.title('-Sin(x)')  # 设置第四个子图的标题为 "-Sin(x)"# 自动调整子图之间的空隙,避免标题、轴标签等元素重叠
plt.tight_layout()# 显示图形
plt.show()
import matplotlib.pyplot as plt
import numpy as np# 设置字体和负号显示
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False   # 用来正常显示负号# 定义第一个数据集
x = np.array([1, 2, 3])
y = np.array([3, 5, 7])# 创建 1 行 2 列的子图布局,并选择第一个子图
plt.subplot(1, 2, 1)
plt.title('line1')  # 设置第一个子图的标题
plt.xlabel('中文')   # 设置 x 轴标签,支持中文
plt.ylabel('值')     # 设置 y 轴标签
plt.grid(True)       # 显示网格
plt.plot(x, y, linestyle='dotted')  # 绘制点线样式的曲线# 定义第二个数据集
x = np.array([1, 2, 3])
y = np.array([3, 5, 70])# 创建 1 行 2 列的子图布局,并选择第二个子图
plt.subplot(1, 2, 2)
plt.plot(x, y, marker='o')  # 绘制带有圆形标记的曲线
plt.title('line2')          # 设置第二个子图的标题
plt.xlabel('x')             # 设置 x 轴标签
plt.ylabel('y')             # 设置 y 轴标签
plt.grid(True)              # 显示网格# 自动调整子图之间的空隙,避免重叠
plt.tight_layout()# 显示图形
plt.show()
import matplotlib.pyplot as plt
import numpy as np# 生成 x 的数值,从 0 到 10,包含 100 个均匀间隔的点
x = np.linspace(0, 10, 100)# 计算 y1 为 sin(x) 函数的值
y1 = np.sin(x)# 计算 y2 为 cos(x) 函数的值
y2 = np.cos(x)# 创建一个新的图形对象,设置图形大小为 10x6 英寸
plt.figure(figsize=(10, 6))# 使用 subplot2grid 创建子图
# (2, 2) 定义一个 2 行 2 列的网格布局
# (0, 0) 指定子图从第 1 行第 1 列开始
# colspan=2 表示该子图横跨两列
ax1 = plt.subplot2grid((2, 2), (0, 0), colspan=2)  # 占据顶部的两列位置# 使用 subplot2grid 创建第二个子图
# (2, 2) 定义一个 2 行 2 列的网格布局
# (1, 0) 指定子图位于第 2 行第 1 列
ax2 = plt.subplot2grid((2, 2), (1, 0))  # 左下角的子图# 使用 subplot2grid 创建第三个子图
# (2, 2) 定义一个 2 行 2 列的网格布局
# (1, 1) 指定子图位于第 2 行第 2 列
ax3 = plt.subplot2grid((2, 2), (1, 1))  # 右下角的子图# 在第一个子图 ax1 中绘制 sin(x) 的曲线
ax1.plot(x, y1, label='Sin(x)')  # 绘制 sin(x) 曲线,并添加标签 'Sin(x)'
ax1.set_title('Sine Function')  # 设置第一个子图的标题
ax1.grid(True)  # 显示网格线
ax1.legend()  # 显示图例# 在第二个子图 ax2 中绘制 cos(x) 的曲线
ax2.plot(x, y2, color='r', label='Cos(x)')  # 绘制 cos(x) 曲线,颜色为红色,标签为 'Cos(x)'
ax2.set_title('Cosine Function')  # 设置第二个子图的标题
ax2.grid(True)  # 显示网格线
ax2.legend()  # 显示图例# 在第三个子图 ax3 中绘制 -sin(x) 的曲线
ax3.plot(x, -y1, linestyle='--', label='-Sin(x)')  # 绘制 -sin(x) 曲线,样式为虚线,标签为 '-Sin(x)'
ax3.set_title('Negative Sine Function')  # 设置第三个子图的标题
ax3.grid(True)  # 显示网格线
ax3.legend()  # 显示图例# 自动调整子图之间的空隙,避免内容重叠
plt.tight_layout()# 显示所有绘制的图形
plt.show()

 x = np.linspace(0, 10, 100)用于生成随机均匀的数。

import matplotlib.pyplot as plt
import numpy as np# 生成 x 轴的数值,从 0 到 10,共 100 个等间隔的点
x = np.linspace(0, 10, 100)# 计算 y 轴的数值,这里是 sin(x) 函数的值
y = np.sin(x)# 绘制 sin(x) 曲线
plt.plot(x, y, label='Sin(x)')# 设置图形标题和标签
plt.title('Sine Function Plot')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')# 显示图例
plt.legend()# 显示网格线,便于观察数据
plt.grid(True)# 显示绘图
plt.show()
import matplotlib.pyplot as plt
import numpy as np# 生成 x 的数值,从 0 到 10,共 100 个等间隔的点
x = np.linspace(0, 10, 100)
y1 = x * x# 设置图像大小,宽度为 12 英寸,高度为 8 英寸
plt.figure(figsize=(12, 8))# 创建第一个子图,占据网格的 (0, 0) 位置,即第一行第一列
ax1 = plt.subplot2grid((2, 2), (0, 0))
ax1.plot(x, y1, label='function')
ax1.set_xlabel('x')
ax1.set_ylabel('y')
ax1.set_title('x and y')
ax1.grid(True)# 创建第二个子图,占据网格的 (0, 1) 位置,即第一行第二列
y2 = -y1
ax2 = plt.subplot2grid((2, 2), (0, 1))
ax2.plot(x, y2, label='function')
ax2.set_xlabel('x')
ax2.set_ylabel('y')
ax2.set_title('x and -y')
ax2.grid(True)# 创建第三个子图,占据网格的 (1, 0) 位置,并跨越两列
y3 = np.sin(x)
ax3 = plt.subplot2grid((2, 2), (1, 0), colspan=2)
ax3.plot(x, y3, label='sin(x)')
ax3.set_xlabel('x')
ax3.set_ylabel('sin(x)')
ax3.set_title('Sine Function')
ax3.grid(True)# 自动调整子图之间的空隙,防止重叠
plt.tight_layout()# 显示图形
plt.show()

  • plt.subplot2grid((2, 2), (0, 0)):创建一个子图在 2x2 的网格中,位于第一行第一列的位置。

  • plt.subplot2grid((2, 2), (0, 1)):创建另一个子图在同一行的第二列。

  • plt.subplot2grid((2, 2), (1, 0), colspan=2):创建一个子图占据第二行的所有列(跨两列),从而在底部形成一个宽的子图。

ax1 的常见用法

  • 设置标题ax1.set_title('Title') 用于设置该子图的标题。
  • 设置轴标签ax1.set_xlabel('x')ax1.set_ylabel('y') 用于设置 x 轴和 y 轴的标签。
  • 绘制数据ax1.plot(x, y)ax1 这个子图上绘制数据。
  • 显示网格线ax1.grid(True) 在该子图中显示网格线。
# 创建第一个子图,并将它的引用赋值给 ax1
ax1 = plt.subplot2grid((2, 2), (0, 0))
ax1.plot(x, y1, label='function')  # 在 ax1 子图上绘制数据
ax1.set_xlabel('x')                # 设置 x 轴标签
ax1.set_ylabel('y')                # 设置 y 轴标签
ax1.set_title('x and y')           # 设置标题
ax1.grid(True)                     # 显示网格线

在一幅图中绘制两种曲线 


http://www.ppmy.cn/ops/115363.html

相关文章

MyBatis 基本概念

MyBatis 基本概念详解 MyBatis 是一个优秀的持久层框架,它支持定制 SQL、存储过程以及高级映射,用于将 Java 对象与数据库中的记录进行映射。作为 ORM(对象关系映射)框架,MyBatis 的主要优势在于灵活性高,…

vue组件之间的数据共享

一、组件之间的关系 1.父子关系 2.兄弟关系 3.后代关系 二、父子组件之间的数据共享 1.父-->子共享数据 父组件通过v-bind属性绑定向子组件共享数据&#xff0c;子组件需要使用props接受数据。 <template><p>父组件</p><Son :msg"msg"…

可编辑PPT | 能源企业数字化框架、数字化运营及数字化平台建设方案

项目背景及需求理解 首先提出了全球能源互联网的概念&#xff0c;强调了清洁能源和电能替代的重要性&#xff0c;并介绍了德国工业4.0战略以及泛在电力物联网的创新。文档探讨了信息化与工业化的深度融合&#xff0c;以及云计算、大数据、物联网和移动应用等新技术在能源行业的…

php+mysql安装

1.卸载mysql 没启动不停止 2.下载 3.解压 4.点击安装 5.出现成功 端口占用修改 修改端口89或者87 可视化扩展 修改后重启 开启扩展

微服务保护详细笔记(一):雪崩问题--Sentinel

目录 1.雪崩问题 1.1.雪崩问题产生原因&#xff1a; 1.2.雪崩问题解决方案 1.2.1.请求限流 1.1.2.线程隔离 1.1.3.服务熔断 1.3.微服务保护技术对比 1.4.Sentinel 1.4.1.介绍与安装 1.4.2.微服务整合 1.雪崩问题 1.1.雪崩问题产生原因&#xff1a; 比如查询购物车的…

【OpenCV】场景中人的识别与前端计数

1.OpenCV代码设计讲解 突发奇想&#xff0c;搞个摄像头&#xff0c;识别一下实验室里面有几个人&#xff0c;计数一下&#xff08;最终代码是累加计数&#xff0c;没有优化&#xff09;&#xff0c;拿OpenCV来玩一玩 首先&#xff0c;还是优先启动电脑摄像头&#xff0c;本项…

Safari-常用快捷键(IPadOS版本)

cmd1 切换数字对应的的标签页cmdL 跳转到地址栏cmdf 页内搜索cmdr 重新载入当前页(刷新)cmdd 当前页加入书签cmdctrl1/2/3 显示书签/阅读列表/浏览记录cmdt 新增标签页cmdw 关闭当前页(感谢csdn自动保存功能)cmd“/-” 放大/缩小页面cmdoptb 左侧打开书签并进入编辑模式cmdshif…

网安新声 | 黎巴嫩BP机爆炸事件带来的安全新挑战与反思

网安加社区【网安新声】栏目&#xff0c;汇聚网络安全领域的权威专家与资深学者&#xff0c;紧跟当下热点安全事件、剖析前沿技术动态及政策导向&#xff0c;以专业视野和前瞻洞察&#xff0c;引领行业共同探讨并应对新挑战的策略与可行路径。 9月17日&#xff0c;黎巴嫩境内发…