当前位置: 首页 > article >正文

数据分析绘制随时间顺序变化图加入线性趋势线——numpy库的polyfit计算一次多项式拟合

在这里插入图片描述

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# 导入数据
data = pd.read_csv(r'C:\Users\11712\notebooktrain1.csv')

# 假设数据包含 'date_time' 和 'speed' 列
data['date_time'] = pd.to_datetime(data['date_time'])  # 确保时间列是 datetime 类型
data.set_index('date_time', inplace=True)  # 将时间列设置为索引

# 筛选出2023年06月01日到2024年06月30日的数据
start_date = '2023-06-01 00:00:00'
end_date = '2023-06-15 23:45:00'
filtered_data = data[(data.index >= start_date) & (data.index <= end_date)]

# 绘制时间与速度的关系图
plt.figure(figsize=(15, 6))  # 设置图形大小
plt.plot(filtered_data.index, filtered_data['obs'], label='Speed', color='blue')  # 绘制折线图

# 添加趋势线
# 将时间索引转换为数字序列(用于计算趋势线)
time_index = np.arange(len(filtered_data.index))

# 使用numpy的polyfit计算一次多项式拟合(即线性趋势线)
coefficients = np.polyfit(time_index, filtered_data['obs'], deg=1)  # deg=1表示线性拟合
polynomial = np.poly1d(coefficients)  # 创建多项式对象
trend_line = polynomial(time_index)  # 计算趋势线的值

# 绘制趋势线
plt.plot(filtered_data.index, trend_line, label='Trend Line', color='red', linestyle='--')

# 添加标题和标签
plt.title('Speed from 2023-06-01 to 2023-06-15', fontsize=14)
plt.xlabel('Date', fontsize=12)
plt.ylabel('Speed', fontsize=12)

# 添加图例
plt.legend(fontsize=10)

# 格式化x轴的时间标签
plt.gcf().autofmt_xdate()  # 自动旋转日期标签,避免重叠
plt.xticks(rotation=45)  # 旋转x轴标签,便于阅读

# 显示图形
plt.tight_layout()  # 调整布局
plt.show()

线的粗细、颜色修改

linewidth=3 参数,将趋势线的宽度设置为 3。你可以根据需要调整这个值,使其更粗或更细。
 color='blue' 改为 color='yellow'。运行这段代码后,折线图将以黄色显示,而趋势线仍然保持为红色

http://www.kler.cn/a/582153.html

相关文章:

  • 揭开AI-OPS 的神秘面纱 第五讲 AI 模型服务层(开源方向)
  • electron+vue+webview内嵌网页并注入js
  • 【实战ES】实战 Elasticsearch:快速上手与深度实践-6.1.1RBAC角色权限设计
  • 【Linux跬步积累】—— 网络基础
  • Windows系统编程项目(四)窗口管理器
  • 关于Go中使用goroutine协程实现的算法
  • java的字符串,数组,集合的长度/大小
  • 格雷希尔: G80P系列在制动卡钳行业自动化应用
  • 数据结构--【顺序表与链表】笔记
  • 第42天:WEB攻防-PHP应用MYSQL架构SQL注入跨库查询文件读写权限操作
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_02带边框和斑马纹的固定表头表格
  • 【从零开始学习计算机科学】操作系统(四)进程的死锁
  • DeepSeek R1在医学领域的应用与技术分析(Discuss V1版)
  • Html5学习教程,从入门到精通, HTML5 新的 Input 类型:语法知识点与案例代码(16)
  • Git创建仓库和基本命令
  • 图纸的安全怎么管理?
  • Android 粘包与丢包处理工具类:支持多种粘包策略的 Helper 实现
  • 沉浸式CSS学习路径
  • 【实战ES】实战 Elasticsearch:快速上手与深度实践-7.3.2使用GraphQL封装查询接口
  • C++数组,链表,二叉树的内存排列是什么样的,结构体占多大内存如何计算,类占多大内存如何计算,空类的空间是多少,为什么?