我在django中创建视图时遇到了一些麻烦,我正在尝试制作一个Web应用程序,该应用程序将从csv读取然后显示绘图,但是我需要从csv绘图的时间轴不是浮点数,它是一个字符串,然后在这里得到它,我不确定如何绘制此时间戳:
def showMe(request):
fig = Figure()
canvas = FigureCanvas(fig)
x, y = np.loadtxt('/Users/name/Desktop/garden_app/stored.csv', delimiter=',', dtype={'names': ('time','moisture'), 'formats': ('|S1', np.float)}, unpack=True)
plt.plot(x, y, align='center', alpha=0.5, label='Name')
plt.ylabel('moisture')
plt.xlabel('time')
plt.title('Moisture V. Time')
buf = io.BytesIO()
plt.savefig(buf, format='png')
plt.close(fig)
response = HttpResponse(buf.getValue(), content_type = 'image/png')
return response
我的csv文件如下:
moisture,time,pump,light,temperature
1023,2019-10-27 17:22:27.367391,running,5V,25 Celsius
1023,2019-10-27 17:22:30.402280,running,5V,25 Celsius
...
“ ValueError:无法将字符串转换为float:'time'”来自第4行的'formats':('| S1',np.float),我不确定如何在此更改一个是数字,另一个是时间戳。
答案 0 :(得分:1)
我建议您使用pandas读取csv文件,它不需要您的数据纯粹是浮点数。
df = pd.read_csv('/Users/name/Desktop/garden_app/stored.csv', parse_dates=True, index_col='time', sep=",")
读取后,您可以将数据框列传递给matplotlib。