美文网首页
python matplotlib模块: plot_date(时

python matplotlib模块: plot_date(时

作者: _Mirage | 来源:发表于2020-07-16 04:34 被阅读0次

    需要注意的是plot_date默认的linestyle是‘ ’, 也就是空, 不改变这个参数的话我们绘制出来的图形看上去就像散点图, 将linestyle这个参数设置成实线后:


    image.png

    数据集

    我们使用gca 和 gcf 方法 分别获取plt对象当前的 轴线(axes)和 特征(figure), 然后可以通过这两个对象分贝设置我们需要绘制的图象的某些特征。
    自定义横轴日期格式:


    image.png

    自动格式化横轴显示的格式:


    image.png image.png

    源码:

    # coding=utf-8
    
    import pandas as pd
    from datetime import datetime, timedelta
    from matplotlib import pyplot as plt
    from matplotlib import dates as mpl_dates
    
    # 使用seaborn风格
    plt.style.use('seaborn')
    
    '''
    # 创建datetime对象列表, 用来表示点在横轴上的位置和标签
    dates = [
        datetime(2019, 5, 24),
        datetime(2019, 5, 25),
        datetime(2019, 5, 26),
        datetime(2019, 5, 27),
        datetime(2019, 5, 28),
        datetime(2019, 5, 29),
        datetime(2019, 5, 30)
    ]
    # 表示竖轴上的位置和标签, 数量必须和横轴上的日期数量对应上
    y = [0, 1, 3, 4, 6, 5, 7]
    # 默认的linestyle是无, 也就是所有的点看上去像散点, 我们手动设置成实线
    plt.plot_date(dates, y, linestyle='-')
    '''
    # 利用pandas快速读取数据集csv中的所有数据
    data = pd.read_csv('./data_5.csv')
    # 取出数据集中所有列名为Date的数据, 并将其格式转化成标准的datetime格式:XXXX-XX-XX
    data['Date'] = pd.to_datetime(data['Date'])
    # 根据数据集的Date列对所有数据进行原地的排序(inplace=True并且排序的key是Date列的数据 默认是从小到大)
    data.sort_values('Date', inplace=True)
    # 取出排序后的所有日期和每日的价格指标
    price_date = data['Date']
    price_close = data['Close']
    # 利用plot_date绘制时序图,横坐标是每日的时间,纵坐标是每日的价格,点与点之间通过实线连接
    plt.plot_date(price_date, price_close, linestyle='solid')
    # plt对象的gcf方法全称: get current figure: 获得当前plt对象所绘制图形的所有特征, 并且可以利用这个对象来改变某些特征
    # 这里我们进行的改变是使得横轴的日期能够自动格式化(更美观): fmt: format(格式化)
    plt.gcf().autofmt_xdate()
    # 如果我们想使用其他风格的格式化时间, 我们可以使用matplotlib包下面的dates模块(有一点复杂)
    # mpl_dates模块下的DateFormatter类接受实例化参数是一个datetime 格式化字符串, 在这里简单说下: %b 表示月份, %d表示日期, %Y表示年份
    date_format = mpl_dates.DateFormatter('%b, %d %Y')
    # plt对象的gca方法: get current axes(其实也就是获取当前正在绘制的图形的实例[因为一个figure可以绘制多个实例]),\
    #   我们将当前axes对象的横轴(x- axis[轴])改变风格, 传进去的参数是前面获取的格式化日期, 即可.
    plt.gca().xaxis.set_major_formatter(date_format)
    
    plt.title('First time series')
    plt.xlabel('Date')
    plt.ylabel('Price')
    plt.tight_layout()
    plt.show()
    
    

    结果:

    image.png

    相关文章

      网友评论

          本文标题:python matplotlib模块: plot_date(时

          本文链接:https://www.haomeiwen.com/subject/pmwehktx.html