文件交换

图像缩略图

circularGraph

版本2.0.0.0(817 KB) 保罗Kassebaum
绘制一个交互式的圆形图来说明网络中的连接。
4.9
40次评级

39下载

更新2016年9月27日

来自GitHub.

在github上查看许可证

在MATLAB中绘制一个交互的圆形图来说明网络中的连接。

引用作为

Paul Kassebaum(2021)。circularGraphGitHub (https://github.com/paul-kassebaum-mathworks/circularGraph)。检索

评论和评级(72

鸿华杨

@daiana pur,
这些是我改变的位,以适应我的需求:
对于自定义颜色映射,从负号到正号,从蓝色到白色到红色:
addParameter (p,“标签”,defaultLabel @iscell);
[行,Col,V] =查找(AddacencyMatrix);
[~,我]= (abs (v));
row =行(i);
col = col(i);
v = v(i);%此分类将确保从最弱到最强的绘图线条,保持底层的弱连接
Colourmap = Zeros(长度(v),3);%这是蓝白红色的Colourmap
对于colourmapping = 1:length(v)
如果v(colourmapping)<0
Colourmap(Colourmapping,:) = [0.2 0.2 1] + [0.8 0.8 0] *(v(托尔马图)+1);
别的
Colourmap(Colourmapping,:) = [1 0.2 0.2] + [0 0.8 0.8] *(1-V(Colourmapping));
结束
结束
解析(p,adjacencymatrix,varargin {:});

为了改变线宽,原来的线宽已经有了,我调整了一些位:

minLineWidth = 0.1;
lineWidthCoef = 1;
u = abs (v);
线宽=美国/ max (u);
线宽=线宽。^ 2;%当系数具有相似的绝对值时,使用幂来控制线宽的范围
如果sum(linewidth)== numel(linewwidth)%所有行都是相同的宽度。
线宽= repmat (minLineWidth元素个数(线宽),1);
其他%的可变宽度行。
linewidth = linewidthcoef * linewidth + minlinewidth;
结束

Matteo Vinao-Carl

卡米尔·格里马尔迪

嗨,是否有没有添加箭头以指定​​连接的方向?

Daiana咕噜咕噜叫

此外,如何使用相关强度改变线路的代码是什么,并具有Colormap匹配。我无法从下面的评论中弄清楚。会欣赏任何帮助!

八仙人

解决了二,三,还剩一题,谢谢你,屋大维

八仙人

/ home / hom / ovl /图片/截图起,2020-11-22 14-07-32.png
/home/ovl/ images /截图from 20-11-22 14-07-57.png
伟大的工具。三个问题:
1.专业:看到上面的图片,它代表了两个连续变焦+的初始图,在matlab中,由于某种原因,该图夹在矩形,中央画布中。我不能没有放大,因为这是一个大的连接矩阵(来自FreeSurfer的Destrieux包裹)。
2.次要:看上面的图片,标签文件包含标签(来自相同的集合包裹),其中包括'_'和'-'在他们的名字,但这些读取为转义字符,它看起来不整洁。
3.非常小:由于某些原因,如果我首先选择All,然后只禁用一个节点(通过单击它的小圆),则显示的连接不会更新;所以如果一个人想显示所有但一个节点,一个必须单独点击激活所有节点,但一个被排除在外(这是一个极端的例子,但它将会很高兴有一个刷新选项后激活/ disactivating各个节点(工具/重置不做)

鸿华杨

@Chiara Bulgarelli,
我认为你可以这样做,用代码中的这个块手动调整颜色图,
对于colourmapping = 1:length(v)
如果v(colourmapping)<0
Colourmap (colourmapping,:) = [0.5 0.5 1] + [0.5 0.5 0]*(v(colourmapping)+1);
别的
Colourmap(Colourmapping,:)= [1 0.5 0.5] + [0 0.5 0.5] *(1-V(Colourmapping));
结束
结束
然后你只要把"colourmap"矢量放到指定的地方,这是一个颜色地图,从蓝色到白色到红色,从负数到正数。

Dimosthenis Pasadakis

文坊张

Saampras Ganesan

嗨,有没有办法根据一些强度改变节点的大小?

奇亚拉Bulgarelli

@Paul,非常感谢你的代码!

@Ryan McDoNough,我正在尝试修改版本,为相关的相关性使用不同的颜色。但是,我只有一个节点在中间的一个节点,没有别的。你介意在这里附加整个代码吗?

非常感谢
Chiara.

gianfranco portaluri.

亲爱的Paul,非常感谢这个例子,这正是我在ML动态溢出分析中试图做的。
但我有个问题。当我运行代码时,我会收到一个错误,因为功能'circulargraphy?本身不接受双重类作为输入。

我也尝试了细胞类型,同样的结果。你能给我一个提示吗?

问候,

gianfranco portaluri.

Enrico Schulz.

嗨,保罗,谢谢你的情节。
有没有可能把下面的弧调高一点,这样acs的顶点就更接近圆心了?
非常感谢你,enrico

Ryan McDoNough.

也发生了变化

[row2、col2 v2] =找到(correlationMatrix);%v2将创建所有相关值的Nx1矩阵

diag = tril(correlitationmatrix);
对于n = 1:尺寸(DIAG,1)
v2(n,1)= max(diag(n,:));
结束

Ryan McDoNough.

跟进我的评论。改变两个实例

>“颜色”,this.ColorMap(行(i),:)…

>'颜色',defaultColormap(i,:),...

Ryan McDoNough.

对于那些想要根据相关价值控制线颜色的人,我找到了解决方案

将第二个输入添加到函数调用以包含另一个矩阵(如果仅使用一个矩阵忽略,只需用AddacencyMatrix或您选择的矩阵替换CorrelationMatrix)

>功能=循环(AddacencyMatrix,CorrelationMatrix,Varargin)

在线之后

> p = inputParser;

粘贴以下内容,将你组装的相关值数组转换为实例顺序的RGB值:

> [row2,col2,v2] =查找(correlationmatrix);%v2将创建所有相关值的Nx1矩阵
= >地图colormap(热);%初始化颜色映射,将颜色映射方案更改为您所选择的颜色映射方案之一
> minv = min (v2 (:));%min Max来建立颜色地图的边界
> maxv = max(v2(:));
> ncol = size(地图,1);
> S =圆形(1+(NCOL-1)*(V2-MINV)/(MAXV-MINV));%规模表明转换
> rgb_image = ind2rgb(年代,地图);%将缩放指标转换为RGB,得到Nx1X3矩阵
>defaultColorMap =重塑(rgb_image, [length(v2) 3]);%重塑为Nx3矩阵

更改当前第46行(将变为第54行)

> addParameter (p ' ColorMap defaultColorMap, @ (ColorMap)长度(ColorMap) = = (adjacencyMatrix));

> addParameter (p ' ColorMap defaultColorMap, @ (ColorMap)长度(ColorMap) = = (defaultColorMap));

现在的121行(将变成130行)

>“颜色”,this.ColorMap(行(i),:)…

您还可以创建一个自定义颜色映射,它是您拥有的节点连接数的长度,并将其提供给代码(可能需要更改几行)。希望这可以帮助!

>'颜色',defaultColormap(i,:),...

Ryan McDoNough.

天石熊

沃尔特

@Richard谢谢你修复了线路外的磁盘bug!
对于其他人,请注释掉这一节:
如果u(1) >= 0 && v(1) >= 0
%确保弧在单位磁盘内
Theta = [Linspace(Max(Thetalim),PI,50),...
linspace(-pi,min(etalim),50)]。';
别的
Theta = Linspace(雷达姆(1),六甲基姆(2))。';
结束

而是替换为此:

sortedthetaLim = (thetaLim)进行排序;
如果sortedthetaLim (2) -sortedthetaLim(1) >π
thetaLim (1) = sortedthetaLim(2) -(2 *π);
thetaLim (2) = sortedthetaLim (1);
结束
Theta = Linspace(雷达姆(1),六甲基姆(2))。';

Pramod Somvanshi.

嗨,是否有一种方法可以在绘制相关系数时从-1到1调整Colormap范围?

杨必应

托马斯pfeffer.

谢谢你的功能,我真的很喜欢它。有没有办法关闭按钮?我试图评论代码的各自部分,但不知何故它不会影响外观......谢谢!

Arun Kumar

瓦伦提娜萨帕塔

穆罕默德伊斯兰教

嗨,是否有任何方法可以同时更改节点编号的字体大小,而无需单独执行它们?

Fidan Sumbul

伊丽莎白Drybrugh

嗨,当我创建一个新的标签,它只是覆盖它。如何先删除默认标签?matlab。

干杯。

伊丽莎白Drybrugh

谢谢分享,等不及要尝试了。

Pietro伊利亚

Ganguli Poulomi

Ganguli Poulomi

我指的是这篇文章中的第二个人物:http://circos.ca/intro/tabular_visualization/

Naba Ahsan.

如何指定图中节点的数量?

Lei郝

Mylena Reis.

你是怎么做圆形图和颜色条的?

Mylena Reis.

托马索Sanzin

理查德

@Paul似乎有个问题,有些弧线是向外而不是向内的;我认为如果节点数能被4整除就可以。在这种情况下,talim(2)是+pi,但算法期望的是-pi,并最终绘制了错误的两个可能的弧线。我通过明确检查哪个弧更短(排序talim,如果值之间的差是>pi减去2*pi从较大的一个,把它放在第一个),并绘制它,而不是做u(1),v(1)>=0检查。希望会有帮助!

保罗Kassebaum

@John,谢谢!(:

John Mungall.

非常感谢这非常赞赏的代码。我一直想尝试一下,“今天就是最好的机会!”

保罗Kassebaum

@Roman,看起来像是一篇有趣的文章!谢谢引用我的代码。(我很高兴有用。)我已经把你的文章分享给了MathWorks的一些朋友,他们一直在考虑在化学/ ChE课程中使用计算。干杯!

罗马Voronov

我在出版物中使用并引用了您的代码:http://www.sciencedirect.com/science/article/pii/S1749772816300768#fig0015

Derek Walpole.

@Paul Great Tool,谢谢。我拥有的一个问题是我的一些图表在外面的节点之间有一些连接。看起来有点奇怪并穿过标签。你熟悉这个以及如何解决它吗?非常感谢。

Gyan Raj Koirala.

@Iness
您没有使用此代码控制颜色(请参阅下面保罗的回答)。
为了改变线的宽度:在circularGraph。米去
%基于s的值(存储在v)的值并调整参数来计算线宽
例如:
minlinewidth = 5;
lineWidthCoef = 5;
线宽= v;
希望它有效。
问候,

inets mahjoub.

请我想改变线条的颜色及其宽度,我该怎么办?

Markus Gschwind.

亲爱的,所有人都可以启动绘图时钟位置12:00,然后顺时针顺时针,而不是9:00?我怎样才能管理这个?

保罗Kassebaum

@gyan.
您的用例超出了我的设计可以做的事情。我设计了节点和连接线作为单个图形对象:具有单个标记的线()。因此,当更改节点的颜色时,更改出来的所有连接的颜色。您的用例可能很常见。如果我发现时间,我会考虑改变这种设计以启用它。与此同时,您现在可以与Matlab中的网络图表功能相得同。我在MATLAB包括网络图形作为基本数据类型之前写下了这一点。请选中此文档页面:

//www.tatmou.com/help/matlab/graph-and-network-algorithms.html.

Gyan Raj Koirala.

谢谢@mathworks物理团队
但是我仍然有控制连接线颜色的问题。
您能否请帮助我根据阈值生成连接线(例如,连接值为1,则连接行#red,如果连接值为2,则连接线是#blue)。

MathWorks物理团队

@gyan.
感谢您的笔记和评级。

在节点的makeLine()中。M,在行对象构造中,添加以下行:
MarkerFaceColor, this.Color,……

将这行代码添加到Node.m中的updateColor()中
this.NodeMarker.MarkerFaceColor = this.Color;

将此代码添加到Node.m中的UpdateTextLabel()的末尾
this.TextLabel.FontWeight =“大胆”;

指定每个节点的颜色。
c =循环(x);有点x的%
提出= colormap(酷(长度(c.Node)));%一些colormap
当k = 1时:length(c.Node)
c.Node (k)。颜色=提出(k,:);
结束

Gyan Raj Koirala.

亲爱的保罗,
请您帮我做一下:
1.用固定的颜色填充特定的节点。
2.控制线的颜色。
3.制作标签字体粗体。

感谢这个伟大的工具。

狮子座相反

罗马Voronov

亲爱的保罗,有可能给这些联系的颜色赋予意义吗?例如,它们能根据连接的强度涂上颜色吗,有点像热图?你能给我一些如何做到这一点的建议吗?

罗马Voronov

吉玛威廉姆斯

这真的很有帮助,谢谢你…我也想知道如何减少字体大小?你能否在下面提供更多的信息?另外,我如何从一个以上的节点添加连接请?目前,我只能为一个节点添加连接。
谢谢,Gemma.

劳伦斯弗兰克斯

马格达莱纳圣罗马

埃德加·格瓦拉

@PAUL:伟大的可视化工具,简单,但有效。始终想要一些版本的matlab。在侧面笔记中,我不得不修改第120和143线:从违法行为(i)到abs(linewidth(i)),所以我可以绘制负连接(反相)

程乔琳

Atif Khan.

@Paul非常感谢。我非常感谢您的快速回复和帮助。

保罗Kassebaum

@atif,谢谢你的赞美和评级。

我建议在节点类中编辑UpdateTextLabel()方法(在此包的Node..m中定义)。在UpdateTextLabel()中,创建底层文本()对象(内置到MATLAB的类),这是分配文本()对象的FontSize属性的好地方。

如果需要进一步帮助,请告诉我。
-
保罗

Atif Khan.

这太棒了。感谢分享。
我的标签字体有问题。我画了50个有长标签的节点。在我的情况下,圆形图形抑制实际图形的大小,并放大标签字体大小,但我希望它反过来。是否有一种方法可以减少节点标签的字体,并放大图形本身?

Atif Khan.

加雷斯·托马斯。

1词:棒:)

保罗Kassebaum

@Donald,在名为node的文件中。M看哪一行是

集(this.Connection,“颜色”,0.9 * (1 1 1));

把它改成

(此设置。连接、“颜色”(1 1 1));

唐纳德麦克芬米

保罗,

这很有用。有没有办法使隐藏的连接变白(匹配背景)而不是灰色?

大学教师

保罗Kassebaum

@ivan,谢谢(:

伊凡

可以扩展很多功能,但仍然是一个很好的工作。谢谢你!

保罗Kassebaum

@MarcVanKralingen你可能有一个例子代码片段来演示这个问题?

马克·范克拉林金

其中一条线放在圆的外面。我找不到漏洞。

Ligong Han.

保罗Kassebaum

@Cristi
您可以通过在CircularGraph.m中更改第112行来修复BUG
如果是行(i)
如果row(i) ~= col(i)

Cristi

你好,非常好看的图表!它是否也适用于有向图,即矩阵的上下三角形都有1 ?
我在矩阵“hc”上运行代码,其有1个值对以下标签进行关流:
> > c.Label(找到(hc (:, 4) > 0))

ans = ' A ' '“ACC MOFC”“MTG”的“”PHG PMC“R””TP”

> > c.Label(找到(hc (4:) > 0))

ans ='a'''''''pcc'''vlpfc''''ai''pi''

然而,当只突出显示节点4,点击标记为ACC'时,只绘制4条线,从ACC'到PCC'、VLPFC'、aI'和pI'。
此外,在查看节点4时,它返回5个连接,尽管在图表上只能看到上述4个连接:
>> C.Dode(4)

ans =.

具有属性的节点:

标签:ACC”
连接(1 x5线):
位置:[-0.9629 -0.2698]
颜色:[0.2095 0.2331 0.6660]
可见:1
程度:0.2833

对这个问题的任何想法?显然,它只绘制与具有更高数字的节点的连接,在此示例中忽略节点2(a')和3(acc)。

谢谢,
Cristi

Matlab释放兼容性
创建R2014b
兼容任何释放
平台的兼容性
视窗 苹果系统 Linux

社区宝藏狩猎

在MATLAB中心找到宝藏,并发现社区可以如何帮助您!

开始狩猎!