首页 > 解决方案 > Matplotlib.plot_date 自动在我的数据系列中添加日期,为什么以及如何避免?

问题描述

我是 python/matplotlib 的新手,在进行实验时,我鼓励这种奇怪的行为,即生成的图表总是显示我的系列中不存在的那些点(日期)。我试图从文档和网络上搜索,但找不到太多线索。这是我制作图表的方式:

import pymysql
import datetime
import pandas as pd
import matplotlib.pyplot as plt

serial_no = '163406'
start_date = '2020-06-28'

mysql = pymysql.connect(host="localhost",port=3306,user="dbuser",passwd="psword",db="expdb")
cursor = mysql.cursor()

sql = "select r.t_date ,r.acc_av from expdb.records r \
        where r.sn = '"+serial_no+"'and r.t_date >= '"+start_date+"' order by r.t_date ASC"

data= pd.read_sql(sql, mysql, parse_dates=['t_date'])
data = data.set_index('t_date')

plt.plot_date(fdata.index,data[['acc_av']],linestyle=':', marker='.', label='acc av')

plt.show()

数据类型的数据类型:

fund_df.info()

<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 32 entries, 2020-11-30 to 2021-01-13
Data columns (total 1 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   acc_av  32 non-null     float64
dtypes: float64(5)
memory usage: 1.5 KB

一些样本数据:

data.head(10)
            acc_av
t_date  
2020-11-30  7.0706
2020-12-01  7.2280
2020-12-02  7.2234
2020-12-03  7.2360
2020-12-04  7.2889
2020-12-07  7.2660
2020-12-08  7.2721
2020-12-09  7.1850
2020-12-10  7.1953
2020-12-11  7.1542

有几天肯定不在系列中,即2020-12-05、2020-12-06。

从它生成的图表来看,即使这些不存在日期的标记,图表上仍然存在时间范围,例如从 12-04 到 12-07 显示更长的间隔空间,例如,无论我使用 plt.plot( ) 或 plt.plot_date()。有没有办法避免 matplotlib 自动将这些不存在的日期放回图表中?

生成的图表在此处输入图像描述

不同更清晰线条/标记样式的图表(在下面的 Ankur 评论中回显) 在此处输入图像描述

标签: pythonpandasdataframematplotlib

解决方案


推荐阅读