微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

时间序列 Python 绘图问题轴不匹配

如何解决时间序列 Python 绘图问题轴不匹配

我正在处理水流数据,结果很奇怪,图中出现了奇怪的线条。

我已经阅读了不同的样本,遵循了样本,但仍然无法摆脱这些行。另外,我将日期列更改为索引列,但仍然给我这个奇怪的图表。

有人知道我的代码有什么问题吗?感谢您的帮助。

我使用的数据集:https://drive.google.com/file/d/1XpzrZ-i1c_A2XUVE4yspo5n7x0XPXwWP/view?usp=sharing

这是数据集的图片 enter image description here

# combine the 'Year' and 'Month' column
    df['Date'] = pd.to_datetime(df[['Year','Month']].assign(DAY=1))

# select only the 'Date' and 'Total_Surface_Water_diverted' column
    df=df.loc[:,['Date','Total_Surface_Water_diverted']]

# change "Date" to index column
   df['Date'] = pd.to_datetime(df['Date'],format='%Y-%m-%d')
   df = df.set_index('Date')

#check out the data types of each column.
   df.dtypes

#plot the total surface water diverted per month
   fig_size = plt.rcParams["figure.figsize"]
   fig_size[0] = 15
   fig_size[1] = 5
   plt.rcParams["figure.figsize"] = fig_size

   def plot_data(df):
       plt.title('')
       plt.ylabel('Total_Surface_Water_diverted')
       plt.xlabel('Month')
       plt.grid(True)
       plt.autoscale(axis='x',tight=True)
       plt.plot(df['Total_Surface_Water_diverted'])
       plt.show()

   plot_data(df)

这是有线图 enter image description here

解决方法

您的数据集大约有 381k 行。您的数据有 13 年,每个 12 个月,所以我很确定您的数据不是按日期单调排序的。事实上,我猜日期跳动了很多。为了说明这一点,如果每次日期小于前一个日期时都拆分此数据,则会得到多个较小的集合,每个集合可以画一条线。由于你在你的图中只画了一条线,所有这些点都是相连的,这条线会来回,来回。

在下图中,您可以看到年份之间存在差距。这可能意味着您的数据按年份排序。 gap betwenn years

您必须弄清楚您的数据代表什么以及为什么同一年有多个数据点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?