x 轴浮点数在选择子集时显示不同的值

x axis floats shows different values when selecting subset

我有这些数据:

https://easyupload.io/m/874ddl

import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

dates = np.load('dates.npy')
data = np.load('data.npy')

print(dates)

日期是:

[[2016. 2016. 2016. 2016. 2016. 2016. 2016. 2016. 2016. 2016. 2017. 2017.
  2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017.
  2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017.
  2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017.]
 [2016. 2016. 2016. 2016. 2016. 2016. 2016. 2016. 2016. 2017. 2017. 2017.
  2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017.
  2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017.
  2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017.]
 [2016. 2016. 2016. 2016. 2016. 2016. 2016. 2016. 2017. 2017. 2017. 2017.
  2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017. 2017.
...............

我想绘制日期与数据。

如果我尝试 matplotlib:

plt.plot(dates, data)

我收到:

如果我尝试:

plt.plot(dates[:, 0], data),

我收到:

可以看到x轴的值和数据完全不一样

我收到了与 seaborn 相同的图:

sns.lineplot(x=dates[:, 0], 
             y=data)

我想使用 seaborn 并拥有正确的 x 轴日期。

第一个命令遍历 dates 的列,并根据 data 中的值绘制它们。然而,在许多情况下,日期列没有变化,即只有 2016 年或 2017 年 (plt.plot(dates[:, 4], data)。只有当两个值都存在时,才能追踪到一行 (plt.plot(dates[:, 5], data)。默认情况下, matplotlib 样式没有标记,因此图形看起来是空的(您可以将 marker='o' 添加到绘图命令中以显示这一点)。此外,由于 x 中没有变化,matplotlib 尝试给出绘制 x 的一些限制,最终与 x 变化时的限制不同。

如果您希望所有柱形图具有相同的限制,您可以在每个单独的柱形图之后使用 plt.xlim(left=2015.7, right=2017.3) 指定。在这里,我在左侧和右侧放置了一个 0.3 的缓冲区,但您可以将其更改为任何看起来更好的值。