【问题标题】:Do not display missing values ​matplotlib不显示缺失值​matplotlib
【发布时间】:2020-08-12 04:19:21
【问题描述】:

我想通过保留标签 x 来删除图表上的平线。

我有这个代码,它给了我一张图片

dates = df_stock.loc[start_date:end_date].index.values
x_values = np.array([datetime.datetime.strptime(d, "%Y-%m-%d %H:%M:%S") for d in dates])

fig, ax = plt.subplots(figsize=(15,9))

# y values
y_values = np.array(df_stock.loc[start_date:end_date, 'Bid'])
# plotting
_ = ax.plot(x_values, y_values, label='Bid')

# formatting
formatter = mdates.DateFormatter('%m-%d %H:%M')
ax.xaxis.set_major_formatter(formatter)

扁平线对应于不存在的数据我想知道是否可以在保持x标签间隙的同时不显示它们。

非常感谢

【问题讨论】:

    标签: python python-3.x matplotlib graph jupyter-notebook


    【解决方案1】:

    您希望在 x 轴上有时间,而时间是等距的——无论您是否有数据。 您现在有多种选择:

    1. 不要在 x 轴上使用时间,而是使用样本/索引
    2. 按照 1 进行操作,但将刻度和标签更改为再次绘制时间(但这次不是等距)
    3. 使值向量等距并使用NaNs 来填补空白

    为什么会这样? 默认情况下,matplotlib 会生成一个线图,它使用它们呈现的顺序将点与线连接起来。与此相反,散点图 只是绘制各个点,而不是暗示任何潜在的顺序。您获得的结果与使用不带标记的线图相同。

    一般来说,你有 3-4 个选项

    1. 使用plot 命令,但只能绘制标记(添加linestyle=''
    2. 使用scatter 命令。
    3. 如果您使用NaNs,plot不知道要绘制什么并且什么都不绘制(但也不会将不存在的点与线连接)
    4. 使用循环并将连接的部分绘制为同一轴上的单独线

    如果您想对代码几乎不做任何更改,选项 1/2 是最简单的。选项 3 是最合适的,并且 4 模仿了这个结果。

    【讨论】:

      猜你喜欢
      • 2021-11-19
      • 2016-11-26
      • 2021-05-10
      • 2020-09-08
      • 2016-09-11
      • 1970-01-01
      • 2021-02-23
      • 1970-01-01
      • 2013-05-03
      相关资源
      最近更新 更多