Python I';在使用matplotlib在同一个图形上绘制日期和两条数据时遇到问题
我用下面的代码绘制了简单的日期图和一段数据。现在我想在一张图上绘制两条数据 数据(m/d/y,数据0,数据1) 我试图修改这段代码以读取额外的浮点值,但我只是不太了解语法,它返回了一个错误。我也搜索过软件,没有找到一个有用的例子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
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'])