我在Matlab中有42个变量,并已经计算了它们的相关矩阵。现在我想用一个schemaball可视化它。有没有人有任何建议/经验,如何在Matlab中实现?以下图片将更好地解释我的观点:
在这些图片中,每个变量之间的抛物线代表它们之间的相关强度。线条越粗,相关性越强。我更喜欢图1的样式,而不是图2中我使用不同的颜色来突出显示相关强度的样式。
我在Matlab中有42个变量,并已经计算了它们的相关矩阵。现在我想用一个schemaball可视化它。有没有人有任何建议/经验,如何在Matlab中实现?以下图片将更好地解释我的观点:
在这些图片中,每个变量之间的抛物线代表它们之间的相关强度。线条越粗,相关性越强。我更喜欢图1的样式,而不是图2中我使用不同的颜色来突出显示相关强度的样式。
完成了,我想.. 代码可以在这里的github找到。 文件中包含文档。
黄色/洋红色(用于正/负相关性)以及标签字体大小和标签绘制的角度是可配置的,因此如果您愿意并且不均匀地沿周长/分组一些东西,您可以变得很奇特/…
如果您想要实际打印这些图表或在Matlab之外使用它们,建议使用矢量格式(例如eps)。当您缩放时,文字大小会更改,这也很烦人,但我不知道有什么办法可以在不攻击缩放功能的情况下解决这个问题 :/
schemaball % demo
schemaball(arrayfun(@num2str,1:10,'uni',false), rand(10).^8,11,[0.1587 0.8750],[0.8333 1],2*pi*sin(linspace(0,pi/2-pi/20,10)))
schemaball(arrayfun(@num2str,1:50,'uni',false), rand(50).^50,9)
LineSmoothing
标志,但变化不大,说实话看不出什么区别。这就是为什么我建议使用矢量格式进行导出的原因。我使用这种方法的经验非常好:链接 - Gunther Struyf我已经完成并提交了 我的版本 到 FEX:schemaball,将尽快更新链接。
与 Gunther Struyf 的贡献相比,有一些不同之处:
请参考 演示、自定义标签和创意定制的示例。
注意:第一个图是使用saveas()
导出的,其他所有图都是用export_fig
导出的。
schemaball
x = rand(10).^3;
x(:,3) = 1.3*mean(x,2);
schemaball(x, {'Hi','how','is','your','day?', 'Do','you','like','schemaballs?','NO!!'})
h = schemaball;
set(h.l(~isnan(h.l)), 'LineWidth',1.2)
set(h.s, 'MarkerEdgeColor','red','LineWidth',2,'SizeData',100)
set(h.t, 'EdgeColor','white','LineWidth',1)
默认的色彩地图:
为了改善屏幕渲染,您可以使用实验性的 -hgVersion 2
开关启动 MATLAB,这将默认生成反锯齿图形(来源:HG2 update | Undocumented Matlab)。但是,如果您尝试保存该图,文件将具有通常的旧反锯齿渲染效果,因此这里是 Gunther's schemaball 的屏幕截图图像:
重要更新:
现在您可以使用Matlab中的FileExchange提交来完成此操作:
http://www.mathworks.com/matlabcentral/fileexchange/48576-circulargraph
这里有一个Matlab的示例:
http://uk.mathworks.com/examples/matlab/3859-circular-graph-examples
它可以产生如下图所示的美丽图表: