主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

使用面积图比较交通数据集

ThingSpeak™ 中的 MATLAB® Analysis 和 MATLAB Visualization App 让您可以从一系列代码模板中进行选择,作为构建您自己的工程的起点。此示例演示了如何使用面积图来比较两个相似的变量与从现有 ThingSpeak™ 通道读取的数据。

ThingSpeak 通道 38629 包含来自马萨诸塞州纳蒂克 9 号公路的交通数据。该数据是通过 Raspberry Pi 上的计数算法处理的视频源生成的。字段 1 包含西行车辆数量,字段 2 包含东行车辆数量。

从模板代码创建 MATLAB Visualization

要创建来自 ThingSpeak 通道的一组数据的面积图,请使用提供的代码模板创建 MATLAB 脚本。

导航到 Apps 选项卡,然后选择 MATLAB Visualizations。点击 New,选择 Use area plot to compare traffic data sets,然后点击 Create

可视化您的数据

ThingSpeak 使用模板代码填充 MATLAB Code 字段以读取数据,然后生成面积图。

1) 设置与 ThingSpeak 通信的变量。车辆计数器通道是公共的,因此您不需要添加读取 API 密钥。如果您正在从自己的通道阅读,则可以修改这些值。

readChannelID = 38629;
readAPIKey = '';

2) 使用 thingSpeakRead 读取最近 33 小时的数据的字段 1 和 2。使用时间表输出格式简化了操作时间和平均数据。

carData = thingSpeakRead(readChannelID,'Fields',[1 2],'NumMinutes',2000,...
    'ReadKey',readAPIKey,'Outputformat','Timetable');

3) 使用 retime 对每小时数据取平均值,并将其保存在新的时间表中。由于车辆计数器每 15 秒记录一次数值,因此周期较长的趋势往往隐藏在 15 秒的波动中。将 15 秒的平均值乘以 240,以一小时内的汽车数量来表示平均值。

aveCar = retime(carData,'hourly','mean');
eastCars = aveCar.DensityOfEastboundCars*240;
westCars = aveCar.DensityOfWestboundCars*240;

4) 使用 area 将东行数据和西行数据绘制在同一轴上。使用 xlabelylabellegend 在图上设置适当的标签。您可以编辑模板代码来适合您的应用程序。例如,您可以在代码中编辑阅读的天数和情节标题。请记住,thingSpeakRead 一次读取只能读取 8000 个数据点,这相当于一天多的数据。

area(aveCar.Timestamps,[eastCars,westCars]);
xlabel('Time');
ylabel('Average Car Density per Hour');
legend({'East','West'});

5) 按 Save and Run 生成图。面积图是根据实时数据生成的,因此您的可视化效果与此图不同。注意高峰时段和午餐时段的突出峰值。图表明最好在早上 6 点之前出门上班,晚上 8 点之后回家。

将可视化添加到通道视图

您可以选择将已保存的可视化效果添加到您的通道。在显示设置中,使用将此可视化添加/编辑到通道旁边的加号来展开通道列表。

点击与要添加可视化效果的通道对应的复选框。要添加私有可视化效果,请选中 Private View。要共享 URL 并将可视化内容添加到 Public View,请点击 Create a public URL。要更新您的选择,请点击 Save Display Settings

另请参阅

函数

主题