前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python绘制面积折线图,三种用法演示

Python绘制面积折线图,三种用法演示

作者头像
double
发布2024-04-18 16:45:04
750
发布2024-04-18 16:45:04
举报
文章被收录于专栏:算法channel算法channel

你好,我是郭震

误差带面积图是比较常用的一种图形展示方法,参与绘图的每个点都有一个上下偏差,误差带名字由此而来。

面积图

误差带面积图,基本代码,一共10个点,有三组数据,如下x, y, error.

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

# 生成随机x数据(例如:时间序列)
x = np.arange(1, 11)
# 生成对应的随机y数据
y = np.array([3, 1, 2, 4, 5, 7, 5, 9, 10, 11])

# 生成每个数据点的随机误差大小
error = np.array([1, 3, 2, 2, 2, 2, 2, 1, 1, 1])

# 计算上下误差带
y_upper = y + error
y_lower = y - error

# 创建图表
plt.figure(figsize=(10, 5))

# 绘制面积图,展示误差带
plt.fill_between(x, y_lower, y_upper, color="lightblue", alpha=0.5)

# 绘制折线图,显示主要趋势
plt.plot(x, y, color="blue", alpha=0.7, linewidth=2)

# 添加标题和轴标签
plt.title('Random Data Line and Area Plot with Error Bands')
plt.xlabel('X axis')
plt.ylabel('Y axis')

# 显示图表
plt.show()

绘图结果展示:

绘制子图

一行两列,两个子图:

代码语言:javascript
复制
# 生成随机x数据(例如:时间序列)
x = np.arange(1, 11)
# 生成对应的随机y数据
y = np.array([3, 1, 2, 4, 5, 7, 5, 9, 10, 11])

# 生成每个数据点的随机误差大小
error = np.array([1, 3, 2, 2, 2, 2, 2, 1, 1, 1])

# 计算上下误差带
y_upper = y + error
y_lower = y - error

# 创建图表窗口
plt.figure(figsize=(20, 5))

# 第一个子图
plt.subplot(1, 2, 1)  # 1行2列的第1个
plt.fill_between(x, y_lower, y_upper, color="lightblue", alpha=0.5)
plt.plot(x, y, color="blue", alpha=0.7, linewidth=2)
plt.title('First Plot: Random Data Line and Area Plot with Error Bands')
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.ylim(-2, 15)  # 设置y轴范围
y = np.array([5, 6, 8, 6, 8, 7, 8, 9, 12, 11])
y_upper = y + error
y_lower = y - error
# 第二个子图
plt.subplot(1, 2, 2)  # 1行2列的第2个
plt.fill_between(x, y_lower, y_upper, color="lightgreen", alpha=0.5)
plt.plot(x, y, color="green", alpha=0.7, linewidth=2)
plt.title('Second Plot: Random Data Line and Area Plot with Error Bands')
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.ylim(-2, 15)  # 设置y轴范围
# 显示整个图表窗口
plt.show()

定制显示

颜色带中,误差越大,颜色显示越深:

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

# 生成随机x数据(例如:时间序列)
x = np.arange(1, 11)
# 生成对应的随机y数据
y = np.array([3, 1, 2, 4, 5, 7, 5, 9, 10, 11])

# 生成每个数据点的随机误差大小
error = np.array([1, 3, 2, 2, 2, 2, 2, 1, 1, 1])

# 计算上下误差带
y_upper = y + error
y_lower = y - error

# 创建图表
plt.figure(figsize=(10, 5))

# 使用橙色调,透明度变化来模拟颜色深浅
colors = plt.cm.Oranges(np.linspace(0.3, 1, 100))  # 使用100个颜色渐变

for i in range(len(x) - 1):
    # 计算每个区间的误差,透明度与误差成正比
    alpha = 0.3 + 0.7 * (error[i] / max(error))
    # 选择颜色索引,颜色随误差增大而深化
    color_index = int((error[i] / max(error)) * 99)  # 用99是因为颜色索引从0到99
    plt.fill_between(x[i:i+2], y_lower[i:i+2], y_upper[i:i+2], color=colors[color_index], alpha=alpha)

# 绘制折线图,显示主要趋势
plt.plot(x, y, color="darkred", alpha=0.9, linewidth=2)

# 添加标题和轴标签
plt.title('Data Line and Area Plot with Variable Error Transparency in Orange')
plt.xlabel('X axis')
plt.ylabel('Y axis')

# 显示图表
plt.show()
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面积图
  • 绘制子图
  • 定制显示
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档