matplotlib范围曲线简例

本文展示了如何使用Python的matplotlib库在绘制损失曲线时,同时表示每个epoch的平均loss以及其方差。作者通过`fill_between`函数创建了浅色区域来表示方差,提供了详细的代码示例和颜色配置。
部署运行你感兴趣的模型镜像

想在画(平均)loss 曲线时顺便表示方差,即每一个 epoch 的平均 loss 用 plot 画曲线,而在曲线周围用一个浅色区域表示方差。效果:
loss-curve.png

参考 [1-3],用到 matplotlib.pyplot.fill_between 函数。为显示对浅色区及其边界的样式控制,这里用了花里胡哨的配色。

import math
import numpy as np
import matplotlib.pyplot as plt

# 造两个 loss
loss1, loss2 = [], []
for epoch in range(1, 20):
    loss1.append(1 / epoch + np.random.randn(100) * 0.1)
    loss2.append(math.exp(-epoch) + np.random.randn(100) * 0.1)

# 纵轴:loss 均值、方差
loss1 = np.asarray(loss1)
mu1 = np.mean(loss1, axis=1)
sigma1 = np.std(loss1, axis=1)

loss2 = np.asarray(loss2)
mu2 = np.mean(loss2, axis=1)
sigma2 = np.std(loss2, axis=1)

# 横轴:epoch
epochs = list(range(loss1.shape[0]))


fig = plt.figure()
# 均值:用 plot 画
plt.plot(epochs, mu1, label="loss1", linewidth=2, marker='s', c='r') # 红
plt.plot(epochs, mu2, label="loss2", linewidth=2, marker='+', c='b') # 蓝

# 方差:浅色区,用 fill_between
plt.fill_between(
    epochs,         # x
    mu1 + sigma1,   # y upper
    mu1 - sigma1,   # y lower
    color='g',      # 绿,color = edgecolor + facecolor
    linewidth=2,    # 浅色区边界粗细
    alpha=0.2       # 浅色区能见度
)
plt.fill_between(
    epochs,
    mu2 + sigma2,
    mu2 - sigma2,
    edgecolor='none',   # 不要边界
    facecolor='orange', # 橙
    linewidth=2,
    alpha=0.2
)

plt.title("loss curve")
plt.xticks(epochs, list(map(str, epochs)))		# 设横轴标
plt.xlabel("epoch")
plt.ylabel("loss")
plt.legend(fancybox=True, framealpha=0)			# 透明图例
fig.savefig("loss-curve.png", transparent=True)	# 透明背景

References

  1. Filling range of graph in matplotlib
  2. 使用matplotlib绘制范围波动曲线图
  3. python绘制浅色范围曲线
  4. How to export plots from matplotlib with transparent background?
  5. Transparent, fancy legends

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

GPT-oss:20b

GPT-oss:20b

图文对话
Gpt-oss

GPT OSS 是OpenAI 推出的重量级开放模型,面向强推理、智能体任务以及多样化开发场景

### 使用 Matplotlib 绘制曲线 为了展示如何使用 `matplotlib` 来绘制各种类型的曲线,下面提供了一个具体的子来说明怎样创建并显示一条 Logistic 曲线。 #### 导入必要的库 首先需要引入 Python 的绘图库 `matplotlib.pyplot` 和 NumPy 数组处理工具: ```python import numpy as np import matplotlib.pyplot as plt ``` #### 定义函数与数据范围 接着定义 logistic 函数以及设定自变量 x 的取值区间: ```python def logistic(x): return 1 / (1 + np.exp(-x)) x_values = np.linspace(-6, 6, 500) # 创建从 -6 到 6 均匀分布的 500 个点作为输入 y_values = logistic(x_values) # 计算对应的 y 值 ``` #### 设置图形属性 可以进一步设置图表标题、坐标轴标签以及其他样式选项以增强可视化效果: ```python plt.figure(figsize=(8, 6)) # 设定图片大小 plt.plot(x_values, y_values, label='Logistic Curve', color="blue", linewidth=2.0, linestyle="-") plt.title('Plot of the Logistic Function') # 添加标题 plt.xlabel('X Axis Label') # X 轴名称 plt.ylabel('Y Axis Label') # Y 轴名称 plt.grid(True) # 显示网格线 plt.legend() # 展示图 ``` #### 渲染并保存图像 最后一步就是调用 show 方法让浏览器渲染出最终的结果;如果希望将此图保存到本地文件,则可利用 savefig 函数实现: ```python plt.show() # 或者保存为 PNG 文件 #plt.savefig("logistic_curve.png") ``` 上述过程展示了完整的流程,通过这些步骤能够轻松地构建出自定义参数下的平滑连续型曲线[^1]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值