我需要在 Matlab 中编写一个脚本,该脚本将从 Excel 表中读取一些数据并在 Matlab 的图形中绘制一个圆形图。但是有人建议我使用 Excel 工具来绘制它。在 Excel 中绘制圆形图并不难,但我仍然没有找到任何方法让它在 Matlab 中工作,使用 Matlab 的图形。我已经在其他论坛上问过这个问题,但没有收到任何答案。我将非常感谢任何帮助。
2 回答
所以,我想出了如何在 Matlab 的图中使用 ActiveX 控件。
首先,您需要安装驱动程序 mschrt20.ocx(免费,可从 Internet 下载)。在 32 位系统中,您必须将它放在 C:/System32 中,然后通过在 cosole 中键入“regsvr32 mschrt20.ocx”来安装它(以管理员身份)。
然后创建一个 Matlab 图形并将一个 ActiveX 对象放入其中,保存。要激活它,请键入 Matlab 的解释器,如下所示:
anyone = actxcontrol('MSChart20Lib.MSChart.2');
anyone.get;
get(anyone,'ChartData')
现在您可以看到对象的所有属性。在指南中选择正确的属性 'charType' 并在需要时将字段设为 'Legend' 'Visible'。
要使用 ActiveX 对象绘制饼图,您需要设置其字段“ChartData”的含义。这是一个 2xn 的单元格。如下例所示使用它:
S = cell(2, 3);
S(1,: ) = {'first', 'second', 'third'} ; %legend
S(2,: ) = {1, 10, 5} ; %meanings
set(handles.activex1,'ChartData', S);
这就是它的工作原理。ActiveX 控件还有一些其他功能。
有很多方法可以理解您的问题:
如果你想要一个饼图,matlab 可以用 'pie' 函数做到这一点:
http://www.mathworks.com/help/techdoc/ref/pie.html
x = [1 3 0.5 2.5 2];
explode = [0 1 0 0 0];
pie(x,explode)
colormap jet
如果您想实际绘制一个圆,那么您将使用带有“曲率”设置的“矩形”命令,如下所示:
rectangle('Position',[1,2,5,10],'Curvature',[1,1],...
'FaceColor','r')
daspect([1,1,1])
xlim([0,7])
ylim([1,13])
或者您可以查看这些网站以获取绘制圆圈的替代方法:
http://blogs.mathworks.com/pick/2008/03/21/drawing-a-circle/ http://www.mathworks.com/matlabcentral/fileexchange/2876
相反,如果您想要极轴:
http://www.mathworks.com/help/techdoc/ref/polar.html
figure
t = 0:.01:2*pi;
polar(t,sin(2*t).*cos(2*t),'--r')
以下是一个圆的方程式(因此您会看到一个红色圆圈覆盖在黑色极坐标轴上:
polar(t,sin(t).^2+cos(t).^2,'--r')