【问题标题】:Error when ploting datetime data with matplotlib使用 matplotlib 绘制日期时间数据时出错
【发布时间】:2020-08-25 13:56:38
【问题描述】:

我正在努力使用 matplotlib 根据由日期 (YYYY-MM-DD HH:MM:SS) 和浮点数组成的传感器的数据绘制曲线。我已经查找了有关如何绘制日期时间值的信息,并且我能够显示它们,但我得到的数字不正确:

Curve displayed with Excel

Curve displayed with matplotlib

这是显示此类图形的代码(此脚本是 FreeCAD 插件的一部分):

dates = matplotlib.dates.date2num(xData)
plt.plot_date(dates,yData)
plt.show()

xData 和 yData 是从文件 DATA.txt 中提取的值列表:https://wetransfer.com/downloads/04fd9842a0beb0fd0e06666908b2562720200825135406/87b28f

任何建议将不胜感激!谢谢

【问题讨论】:

  • 确保将日期转换为日期时间,将浮点数转换为浮点数。字符串被视为分类
  • 感谢您的评论。事实上,我绘制的值是字符串,实际上不是浮点数。

标签: python-3.x matplotlib plot python-datetime


【解决方案1】:

你必须先导入 pandas 和 matplot

import pandas as pd
import matplotlib.pyplot as plt

那么你必须使用 pandas 打开数据 前pd.read_csv("anything.csv")

【讨论】:

  • 是的,我正确导入了不同的库(我正在使用库 csv 获取 csv 数据)。我检查了我在 xData 和 yData 中的内容,这些值很好。
【解决方案2】:

我使用文本编辑器将分隔符替换为, like

0.13934599999999955,2020-07-12 15:31:11
0.1562399999999998,2020-07-12 15:24:07
0.20419800000000032,2020-07-12 15:16:52
0.0922520000000004,2020-07-12 15:02:33
0.19564400000000023,2020-07-12 14:55:30
0.14740400000000045,2020-07-12 14:48:15

程序如下:

import matplotlib.pyplot as plt
import pandas as pd

df = pd.read_csv("DATA.txt")

df.columns = ['Value', 'Date']
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d %H:%M:%S')

plt.plot(df['Date'], df['Value'])

plt.show()

您可以使用Date formatters 更改xlabel 的格式。您可以使用strftime.org查看格式代码。

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
import pandas as pd

df = pd.read_csv("DATA.txt")

df.columns = ['Value', 'Date']
df['Date'] = pd.to_datetime(df['Date'], format='%Y-%m-%d %H:%M:%S')

plt.plot(df['Date'], df['Value'])

plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%Y'))

plt.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-15
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 2021-12-29
    • 2015-12-23
    • 2021-07-24
    相关资源
    最近更新 更多