【问题标题】:How to swap x ticks with date strings in matplotlib如何在 matplotlib 中用日期字符串交换 x 刻度
【发布时间】:2020-04-16 21:35:45
【问题描述】:

我正在通过以下方式关注关于 matplotlib 的条形图教程:

https://subscription.packtpub.com/book/big_data_and_business_intelligence/9781849513265/1/ch01lvl1sec16/plotting-multiple-bar-charts

import numpy as np
import matplotlib.pyplot as plt

data = [[5., 25., 50., 20.],
  [4., 23., 51., 17.],
  [6., 22., 52., 19.]]

color_list = ['b', 'g', 'r']
gap = .8 / len(data)
for i, row in enumerate(data):
  X = np.arange(len(row))
  plt.bar(X + i * gap, row,
    width = gap,
    color = color_list[i % len(color_list)])

plt.show()

这是我正在使用的代码,也是链接中的代码。我创建了链接中描述的图表,但无法修改 x 轴值/xticks 并将其替换为日期

plt.xticks(['11-2019', '12-2019', '01-2020'])

我遇到了错误:

在转换单位中 f'units: {x!r}') from e matplotlib.units.ConversionError: 无法将值转换为轴单位:['11-2019', '12-2019', '01-2020']

有人知道如何将 x 轴值交换为上述日期吗?

【问题讨论】:

    标签: python python-3.x matplotlib


    【解决方案1】:

    matplotlib 的xticks 需要位置和标签。来自documentary

    xticks(ticks, [labels], **kwargs)  # Set locations and labels
    

    如果您想使用自定义报价,请添加一个位置。您可以只使用np.arange 来创建一系列值,这些值就是您的职位。我还添加了另一个勾号(字面意思),但这不是强制性的。如果你只使用三个刻度,只会出现三个。

    plt.xticks(np.arange(4),['11-2019', '12-2019', '01-2020', 'another tick'])
    

    输出:

    【讨论】:

    • 谢谢。这行得通。但是我的传奇没有出现:
    • plt.legend((data[0], data[1], data[2], data[3]), ('17-24', '25-34','35- 49','50-100'), loc='左上角')
    • @YieldedTemparz 不确定您要使用此语法创建什么。但在我给你一个工作样本之前:这是另一个问题,一般来说你应该在 Stackoverflow 上打开一个新问题。同样,这个也不适合创建,因为这是一项非常简单的任务,可以通过使用 google 或documentary 来完成。为您的图例:您可以使用legend(("17-24', '25-34','35-49'), loc="upper left") 创建图例。这将为您用于创建数据图的每个列表创建一个图例 [1]。
    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-02
    • 2016-12-30
    相关资源
    最近更新 更多