python横坐标为时间序列绘制散点图

今天需要以时间序列为横坐标绘制散点图,十分困难,因为scatter()都要求x为数字,在网上搜索时,搜到了一篇博文,尝试了一下真的成功,感谢感谢,在此转载,让更多人看到,感谢博主的分享:http://blog.51cto.com/happy366/2095768 (原文链接)

 # -*- coding: utf-8 -*-
        """
        speed1219.csv data file format:
        dtime,speed
        2017-12-19 10:33:30,803
        2017-12-19 10:35:29,1008
        2017-12-19 10:36:04,1016
        2017-12-19 10:37:32,984
        2017-12-19 10:38:06,1008
        """
        import pandas as pd
        import matplotlib.pyplot as plt
        from matplotlib.dates import AutoDateLocator, DateFormatter  

        df = pd.read_csv('d:/speed1219.csv',  parse_dates=['dtime'])
        plt.plot_date(df.dtime, df.speed, fmt='b.')

        ax = plt.gca()
        ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d %H:%M'))  #设置时间显示格式
        ax.xaxis.set_major_locator(AutoDateLocator(maxticks=24))       #设置时间间隔  

        plt.xticks(rotation=90, ha='center')
        label = ['speedpoint']
        plt.legend(label, loc='upper right')

        plt.grid()

        ax.set_title(u'传输速度', fontproperties='SimHei',fontsize=14)  
        ax.set_xlabel('dtime')
        ax.set_ylabel('Speed(KB/s)')

        plt.show()

其实这个是将线图改成·,关键就是这一句plt.plot_date(df.dtime, df.speed, fmt=‘b.’),其中的b.也能是b-,应该就是虚线啦。
但是这样也有一个问题,怎样修改散点图中的散点的大小呢?若有大佬知道的话,还请指导

Python中使用Matplotlib包绘制图形时,可以通过修改坐标轴的刻度来调整横坐标(x轴)的时间显示。具体来说,可以先将时间数据类型转换为matplotlib所接受的datetime.datetime对象,然后设置x轴的主刻度和次刻度,以及其显示格式。示例代码如下: ``` import matplotlib.pyplot as plt import datetime # 定义时间序列数据 dates = ['20210101', '20210102', '20210103', '20210104', '20210105'] values = [1, 3, 5, 2, 4] # 转换时间字符串为datetime.datetime对象 dates_datetime = [datetime.datetime.strptime(d, '%Y%m%d') for d in dates] # 创建图形 fig, ax = plt.subplots() # 设置主刻度和次刻度 ax.xaxis.set_major_locator(plt.MaxNLocator(5)) # 设置主刻度为5个 ax.xaxis.set_minor_locator(plt.AutoMinorLocator()) # 设置次刻度自动选择 # 设置刻度标签显示格式 ax.xaxis.set_major_formatter(plt.DateFormatter('%Y-%m-%d')) # 绘制折线图 ax.plot(dates_datetime, values) # 显示图形 plt.show() ``` 上述代码中,首先定义了一个字符串数组dates和一个数字数组values,表示时间序列数据和对应的数值。然后,通过循环将每个字符串日期转换为datetime.datetime对象,并存储在dates_datetime数组中。接下来,创建一个图形,并设置横坐标的主刻度为5个,次刻度自动选择,并将刻度标签格式化为“年-月-日”的形式。最后,使用ax.plot()函数绘制折线图,并通过plt.show()函数显示图形。运行上述代码,将得到一个横坐标时间的折线图。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值