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 的缓冲区,但您可以将其更改为任何看起来更好的值。
我有这些数据:
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 的缓冲区,但您可以将其更改为任何看起来更好的值。