Python I';在使用matplotlib在同一个图形上绘制日期和两条数据时遇到问题

Python I';在使用matplotlib在同一个图形上绘制日期和两条数据时遇到问题,python,matplotlib,Python,Matplotlib,我用下面的代码绘制了简单的日期图和一段数据。现在我想在一张图上绘制两条数据 数据(m/d/y,数据0,数据1) 我试图修改这段代码以读取额外的浮点值,但我只是不太了解语法,它返回了一个错误。我也搜索过软件,没有找到一个有用的例子 import csv import datetime as dt import matplotlib.pyplot as plt import matplotlib.ticker as mticker arch = 'myfile.csv' data = csv.re

我用下面的代码绘制了简单的日期图和一段数据。现在我想在一张图上绘制两条数据

数据(m/d/y,数据0,数据1)

我试图修改这段代码以读取额外的浮点值,但我只是不太了解语法,它返回了一个错误。我也搜索过软件,没有找到一个有用的例子

import csv
import datetime as dt
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker

arch = 'myfile.csv'
data = csv.reader(open(arch))

data = [(dt.datetime.strptime(item, "%m/%d/%y"), float(value)) for item, value in data]
data.sort()
[x, y] = zip(*data)

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(x, y, color='blue')

ax.grid(True)
fig.autofmt_xdate()

plt.title('posts')

plt.xlabel('Date Range 28.06.2013 to 28.03.2014')
plt.ylabel('y')

fig.set_facecolor('white')

plt.show()
有了日期和一条数据,我得到了可爱的结果


是否有人可以修改此代码,根据日期绘制2x数据?

进行这些更改,您就可以开始了:

data = [(dt.datetime.strptime(item, "%b/%d/%y"), float(v1), float(v2)) for (item, v1, v2) in data]
data.sort()
[x, y, z] = zip(*data)

fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(x, y, color='blue')
ax.plot(x, z, color='red')
基本上,csv文件中有三个字段,而
data=
行只需要两个字段

您还需要通过添加以下内容来格式化xaxis:

import matplotlib.dates as mdates
ax.xaxis.set_major_formatter(mdates.DateFormatter("%m/%d/%y"))

您可能希望尝试
pandas
,这将把此操作简化为两行:

import pandas as pd
DF=pd.read_csv('myfile.csv', header=None, names=['Time', 'x1', 'x2'])
DF.plot(x='Time', y=['x1', 'x2'])

非常感谢你。我丢失的那行ax.plot(x,z,color='red')现在有意义了。
import pandas as pd
DF=pd.read_csv('myfile.csv', header=None, names=['Time', 'x1', 'x2'])
DF.plot(x='Time', y=['x1', 'x2'])