主要内容

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

使用区域图比较交通数据集

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

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

基于模板代码创建 MATLAB 可视化

要创建来自 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 (MATLAB) 对每小时的数据取平均值,并将其保存在新的时间表中。由于车辆计数器每 15 秒记录一次数值,因此周期较长的趋势往往隐藏在 15 秒的波动中。将 15 秒的平均值乘以 240,以一小时内的汽车数量来表示平均值。

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

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

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

5) 按 Save and Run 以生成绘图。该区域图由实时数据生成,因此您的可视化效果与此图有所不同。请注意高峰时段和午餐时段的明显峰值。绘图表明最好在早上 6 点之前出门上班,晚上 8 点之后回家。

将可视化添加到通道视图

您可以选择将已保存的可视化添加到您的通道。在 Display Settings 中,使用 Add/Edit this Visualization to a Channel 旁边的加号来展开通道列表。

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

另请参阅

函数

主题