在本例中,我们将展示MATLAB新的UIHTML功能如何使您能够将专门的可视化或信息图形集成到应用程序中,以补充MATLAB的绘图类型。选择的示例可视化是“人口金字塔”,通常用于显示不同年龄组内人口或子人口的统计箱。
本示例利用了D3.js版本5.9.2。
MathWorks应用程序设计团队(2021年)。D3 JS可视化在MATLAB应用程序设计师应用程序(//www.tatmou.com/matlabcentral/fileexchange/72866-d3-js-visualizations-in-matlab-app-designer-apps),MATLAB中央文件交换。恢复.
@Matthew Corner感谢您的帮助,很高兴您发现UIHTML非常有用。
关于在JS中设置以下参数时触发DataChangedFcn的问题:htmlComponent.Data.clicked=true。这是意料之中的,因为JS只查看正在更改的顶级对象,而不查看其内部。感谢您的反馈,我会将此转发给开发团队。
我们也知道MATLAB和JS之间缺乏发送和接收事件的机制。
到目前为止,我很喜欢使用uihtml。可能性是令人兴奋的。然而,我遇到了一个小麻烦,javascript和matlab之间的通信在数据更改方面的工作方式。有关javascript中的单击事件,请参见以下代码段。
我曾期望设置一个数据对象的子元素将触发DataChangedFcn在matlab中,但这似乎不是情况。相反,我必须设置为顶层的htmlComponent。数据值。
//添加单击侦听器
comp.addEventListener(“单击”,函数(){
//不会触发DataChangedFcn
htmlC.Data.Clicked=true;
//是否触发DataChangedFcn
data=htmlC.data;
data.Clicked=true;
htmlC.Data=数据;
});
(即使这是一个解决方案,用于解决缺少添加回调的能力的问题)
此外,normrnd是统计和机器学习工具箱的一部分,所以我不得不修改这个例子,让它工作,没有依赖。
到目前为止,我很喜欢使用uihtml。可能性是令人兴奋的。然而,我遇到了一个小麻烦,javascript和matlab之间的通信在数据更改方面的工作方式。有关javascript中的单击事件,请参见以下代码段。
我曾期望设置一个数据对象的子元素将触发DataChangedFcn在matlab中,但这似乎不是情况。相反,我必须设置为顶层的htmlComponent。数据值。
//添加单击侦听器
comp.addEventListener(“单击”,函数(){
//不会触发DataChangedFcn
htmlC.Data.Clicked=true;
//是否触发DataChangedFcn
data=htmlC.data;
data.Clicked=true;
htmlC.Data=数据;
});
(即使这是一个解决方案,用于解决缺少添加回调的能力的问题)