使用django和matplotlib绘制时间戳

时间:2019-11-18 02:41:14

标签: python django csv matplotlib django-views

我在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),我不确定如何在此更改一个是数字,另一个是时间戳。

1 个答案:

答案 0 :(得分:1)

我建议您使用pandas读取csv文件,它不需要您的数据纯粹是浮点数。

df = pd.read_csv('/Users/name/Desktop/garden_app/stored.csv', parse_dates=True, index_col='time', sep=",")

读取后,您可以将数据框列传递给matplotlib。