主要内容

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

使用直方图了解数据的变化

此示例显示如何从现有的 ThingSpeak™ 通道读取数据并生成直方图。直方图显示所选数据中记录每个特定温度的次数。在示例中,作为起点,您使用 ThingSpeak 中的 MATLAB Analysis 和 MATLAB Visualization App 提供的代码模板之一。

ThingSpeak 通道 12397 包含来自位于马萨诸塞州内蒂克市 MathWorks® 园区停车场顶部的气象站的气象数据。字段 4 包含温度测量值。

从模板创建 MATLAB 可视化

要为 ThingSpeak 通道的一组数据创建直方图可视化,您可以使用代码模板创建 MATLAB® 脚本。

转至 Apps 选项卡并选择 MATLAB Visualizations。点击 New,选择 Use a histogram to understand variation in data,然后点击 Create

可视化您的数据

ThingSpeak 会将生成温度直方图的代码填充到 MATLAB 代码字段中。

1) 指定与 ThingSpeak 通信的变量。由于气象站通道是公共的,因此不需要 read API 密钥。如果您正在从自己的通道读取,则可以修改这些值。

readChannelID = 12397;
TemperatureFieldID = 4;
readAPIKey = '';

2) 使用 thingSpeakRead 以获取 1200 分钟的温度数据。

tempF = thingSpeakRead(readChannelID,'Fields',TemperatureFieldID,...
'NumMinutes',20*60,'ReadKey',readAPIKey);

3) 使用 histogram (MATLAB) 以生成绘图。设置 x 轴和 y 轴标签以及图标题。

histogram(tempF);
xlabel('Temperature (F)');
ylabel('Number of Measurements for Each Temperature');
title('Histogram of Temperature Variation');

Figure contains an axes object. The axes object with title Histogram of Temperature Variation, xlabel Temperature (F), ylabel Number of Measurements for Each Temperature contains an object of type histogram.

4) 您可以编辑模板代码以适应您的应用程序。例如,通过编辑代码来修改要读取的分钟数和绘图标题按 Save and Run 以生成绘图。

由于直方图是根据实时数据生成的,因此您的直方图看起来与此图并不完全相同。

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

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

比较两个直方图

histogram (MATLAB) 还允许您比较不同条件下的分布情况。您可以将当前的波动与过去一天的波动进行比较。以下代码未包含在模板中。要绘制多个分布,请将此代码添加到模板。

1) 读取前一天额外的数据来与原始数据集进行比较。

tempFYesterday = thingSpeakRead(readChannelID,'Fields',TemperatureFieldID,...
'DateRange',[datetime('today')-days(2),datetime('today')-days(1)],'ReadKey',readAPIKey);

2) 启用 hold on 以使数据保持在同一图上。使用 histogram 并将 'FaceColor'to 设置为红色来区分数据。同时添加图例。

% Plot the original Data
histogram(tempF)
xlabel('Temperature (F)');
ylabel('Number of Measurements for Each Temperature');
title('Histogram of Temperature Variation');
hold on
histogram(tempFYesterday,'FaceColor','r');
legend('Today','Yesterday');

Figure contains an axes object. The axes object with title Histogram of Temperature Variation, xlabel Temperature (F), ylabel Number of Measurements for Each Temperature contains 2 objects of type histogram. These objects represent Today, Yesterday.

3) 按 Save and Run 生成对比图。

输出可视化展示了两个时间段内变化的差异。

另请参阅

函数

主题