【问题标题】:Formatting of Dates in Python with matplotlib and datetime: x axis error - float使用 matplotlib 和 datetime 在 Python 中格式化日期:x 轴错误 - 浮点数
【发布时间】:2016-02-11 11:28:30
【问题描述】:

我尝试用一​​组数据绘制图表。 y轴没问题,它是简单的浮动。 问题是 x 轴:它的数据按日期时间格式化为 '%Y-%m-%d %H:%M:%S'。当尝试绘制它时,当然会出现 no float possible 的错误......我尝试了很多方法,但它仍然无法正常工作......

所以到目前为止的输入是两个数组:

x 是['2016-02-05 17:14:55', '2016-02-05 17:14:51', '2016-02-05 17:14:49', ...]
y 是['35.764299', '20.3008', '36.94704', ...]

【问题讨论】:

标签: python datetime matplotlib


【解决方案1】:

你可以使用 mapplotlib 的DateFormatter:

  1. 将您的日期字符串解析为datetime 对象。
  2. 使用date2num() 将您的datetime 对象转换为matplotlib 数字
  3. 使用所需的输出格式创建DateFormatter()
  4. 应用 DataFormatter() 作为 x 轴的主要刻度格式。
  5. 还将您的浮点字符串转换为实际的浮点数。

尝试以下方法:

import matplotlib
import matplotlib.pyplot as plt
from datetime import datetime

x_orig = ['2016-02-05 17:14:55', '2016-02-05 17:14:51', '2016-02-05 17:14:49']
x = [datetime.strptime(d, '%Y-%m-%d %H:%M:%S') for d in x_orig]
y = ['35.764299', '20.3008', '36.94704']

xs = matplotlib.dates.date2num(x)
y_float = list(map(float, y))      # Convert y values to floats
hfmt = matplotlib.dates.DateFormatter('%H:%M:%S')

fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.xaxis.set_major_formatter(hfmt)
plt.setp(ax.get_xticklabels(), rotation=15)
ax.plot(xs, y_float)
plt.show()

这将显示以下内容:

【讨论】:

    猜你喜欢
    • 2014-06-06
    • 2019-06-28
    • 1970-01-01
    • 2020-12-03
    • 2020-12-07
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多