python 画图 : 简单的时间折线图

Table of Contents

 简单的时间折线图

先导入必要的包

导入需要画图的数值csv文件(或者其他类型的文件都可以)

开始画图


 

 简单的时间折线图

先导入必要的包

如果有需要中文标注的需要加上:mpl.rcParams['font.sans-serif'] = ['SimHei']

否则中文会显示一个小小的长方形

# -*- coding: utf-8 -*-

'''
用模型跑出来的预测值和真实值画出带有时间下标的折线图

Created on September 12, 2019
Revised on October 10, 2019    发现预测值中 有些保存的数值会乱 所以增加了寻找正确的对应数值的代码

author: 阿霖

'''
import matplotlib.pyplot as plt
import numpy as np
import csv 
import pandas as pd
import matplotlib.dates as mdates
from datetime import datetime

from pylab import mpl

# 解决中文乱码问题(关于编译格式)
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 时间标注

locator = mdates.MinuteLocator(byminute=[0,30])
locator.MAXTICKS = 1500

导入需要画图的数值csv文件(或者其他类型的文件都可以)

# 用pandas导入数据 
ann_data = pd.read_csv('./dataset03prediction/ann.csv',header=None)
cnn_data = pd.read_csv('./dataset03prediction/cnn.csv',header=None)
lstm_data = pd.read_csv('./dataset03prediction/lstm.csv',header=None)
elm_data = pd.read_csv('./dataset03prediction/elm.csv',header=None)

开始画图

画图是用 true(真实值)加上四种模型的结果画的

def fig_1(time, true,ann,cnn,lstm,elm,cityname):
    plt.figure(figsize = (20,10)) # 调整图片大小 
#     plt.ylim(140000,220000)
#     y_ticks = np.arange(140000,220000,20000)
#     plt.yticks(y_ticks , fontsize = 15)

    plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m')) # 设置时间格式
    plt.gca().xaxis.set_major_locator(mdates.MonthLocator())   

    plt.xticks(pd.date_range("2016-9-1","2018-12-30",freq = "1m"),fontsize = 20)

    plt.plot(time, true, color='r', marker='o',linewidth = 3,label='True')
    plt.plot(time, ann, color='g', marker='D',label='ANN')
    plt.plot(time, cnn, color='y', marker='o',label='CNN')
    plt.plot(time, lstm, color='r', marker='D',label='LSTM')
    plt.plot(time, elm, color='0.5', marker='o',label='ELM')

    plt.legend(fontsize=20)
    plt.ylabel('Average housing price ',fontsize=20) 
    plt.xlabel('Time',fontsize=20)
    plt.title("Model prediction comparison",fontsize=20) 
    #plt.xticks(rotation=90)
    plt.gcf().autofmt_xdate() # 自动调整x轴啦!
    # 在显示之前保存图片
    plt.savefig("./dataset03png/"+cityname + ".png"  ) 
    print("save","./dataset03png/"+cityname + ".png" )

    plt.show()
    
    

要注意装有时间的time的list长度要和画图数值的list长度一致

time里面的元素应该是时间元组

要先保存图片再显示,不然会出现白板的情况

time的获取:

time = []
        
for i in range(52):
    
    Week = str(i+1)
    d = "2018-" + Week + "-0"
    date_time = datetime.strptime(d , "%Y-%U-%w")
    time.append(date_time)

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于您的问题,我可以回答您的第二个问题,并提供一些有关您第一个问题的信息。 关于Python画图函数大全,以下是一些常用的Python画图函数及其用途: 1. matplotlib.pyplot.plot():绘制线条图 2. matplotlib.pyplot.scatter():绘制散点图 3. matplotlib.pyplot.bar():绘制柱状图 4. matplotlib.pyplot.hist():绘制直方图 5. matplotlib.pyplot.boxplot():绘制箱线图 6. matplotlib.pyplot.imshow():绘制图像 7. seaborn.lineplot():绘制线条图 8. seaborn.scatterplot():绘制散点图 9. seaborn.barplot():绘制柱状图 10. seaborn.histplot():绘制直方图 11. seaborn.boxplot():绘制箱线图 12. seaborn.heatmap():绘制热力图 关于您的第一个问题,如果您想用Python每隔一段时间折线图,您可以使用matplotlib库中的animation模块。以下是一个简单的示例代码: ``` import numpy as np import matplotlib.pyplot as plt from matplotlib.animation import FuncAnimation # 生成随机数据 x_data = np.arange(0, 10, 0.1) y_data = np.sin(x_data) # 初始化图像 fig, ax = plt.subplots() line, = ax.plot(x_data, y_data) # 更新函数 def update(frame): y_data = np.sin(x_data + frame * 0.1) line.set_ydata(y_data) return line, # 动画函数 ani = FuncAnimation(fig, update, frames=100, interval=50, blit=True) # 显示动画 plt.show() ``` 这个示例代码会每隔50毫秒更新一次折线图,总共更新100次,您可以根据需要调整更新的时间间隔和更新的次数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值