Circos图的详细介绍

一、circular图

Circular图也叫环状图,是展示关系网络或是多元数据的图表,它可以将很多信息以可视化的方式展现。Circular图是由Martin Krzywinski所设计,广泛应用于生物信息学,地理信息系统,统计学等领域。

在Circular图中,各个数据点位于环形图的一定位置,根据需求可以连线或是用弧度(或扇形)代表这些数据点之间的关系。Circular图主要有两个优点:1、展示范围广,可视化效果好。2、节省可视化空间,方便人眼观察。

下面是一个Circular图的代码示例:

#导入示例数据
chr - tig pairs
chr1 tig00000001_pilon 1 30744
chr1 tig00000001_pilon 30745 41455
chr1 tig00000001_pilon 41456 86090
chr1 tig00000002_pilon 1 56857
chr1 tig00000002_pilon 56858 86510
chr1 tig00000003_pilon 1 27296
chr1 tig00000003_pilon 27297 36267
chr1 tig00000003_pilon 36268 117667

#设置Circular图的外观和属性
karyotype= outfile=karyotype.txt
chromosomes_units=10000
chromosomes_display_default=no

color=red
fill=yes


radius=0.9r
bezier_radius=0.1r
ribbon=true
stroke_thickness=2
stroke_color=black
color=hsb(0.5,0.5,0.7)


#生成Circular图
circos -conf circle.conf -outputfile circle.png

二、circomstance区别

circumstance是一种与Circular图有着相同设计理念的数据可视化软件。它虽然也展示关系网和多元数据,但是其主要应用是在社交网络等领域。Circumstance与Circular图有以下区别:

1、在Circumstance中,展现的点是以直线的形式展现的。与Circular图不同,Circumstance把几个参数中的一个以一定的规则呈放在一条直线上,来展示它们的关系。

2、Circumstance中一些设计很丰富,包括渐变色、不透明度、滤镜等等,这些在Circular图中要更为麻烦。

下面是一个Circumstance的代码示例:

#导入示例数据
"Party Size","Affiliation","Country","Age","Gender"
1000,"Republican","USA",20,"Male"
1000,"Democratic","USA",21,"Female"
1000,"Independent","USA",25,"Male"
1200,"Republican","Canada",18,"Female"

#设置Circumstance图的样式和属性
no_axes
height=800
width=800

  x=Affiliation
  y=Party Size
  line_thickness=8
  color_scheme=spectral
  theme=arrows
  direction=counter_clockwise
      
  
    font_size=18
    font_color=black
    font_family=sans_serif
    echo=true
    placement=inside
    orientation=radial
    rotation=-60
  


#生成Circumstance图
circumstance -f data.csv -o output.svg

三、circuit图

Circuit图是由D3.js提供的技术,同样是一种数据可视化图表。它主要展示的是一组数据之间的关系和流动情况,尤其适用于展示电路板等情形。

Circuit图和Circular图、Circumstance一样,也可以通过连线和区域来展示关系网。但是,Circuit图的连线和路径是沿着一个方向而不是在平面空间展开。Circuit图的特点是图表简洁、清晰易懂。

下面是一个Circuit图的代码示例:

#导入D3.js库和展示数据





    
    
        var svg = d3.select("svg");

        var data = {
            nodes: [
                {name: "Node A"},
                {name: "Node B"},
                {name: "Node C"},
                {name: "Node D"},
                {name: "Node E"},
                {name: "Node F"}
            ],
            links: [
                {source: 0, target: 1},
                {source: 1, target: 2},
                {source: 2, target: 3},
                {source: 3, target: 4},
                {source: 4, target: 5},
                {source: 5, target: 0}
            ]
        };

        var width = 600,
            height = 600;

        var nodes = data.nodes,
            links = data.links;

        nodes.forEach(function(d, i) { d.id = i; });

        var maxLinkWeight = d3.max(links, function(d) { return d.value; });

        var path = d3.line()
            .x(function(d) { return d.x; })
            .y(function(d) { return d.y; })
            .curve(d3.curveBasis);

        var rNodes = 30,
            gapAngle = Math.PI/20;

        nodes.forEach(function(d, i) {
            var angle = i * 2*Math.PI/nodes.length - Math.PI/2;
            d.x = rNodes * Math.cos(angle);
            d.y = rNodes * Math.sin(angle);
        });

        var linkLayout = d3.linkHorizontal()
            .source(function(d) { return d.source; })
            .target(function(d) { return d.target; });

        links.forEach(function(d) {
            var x0 = d.source.x,
                y0 = d.source.y,
                x1 = d.target.x,
                y1 = d.target.y;

            var dx = x1 - x0,
                dy = y1 - y0;

            var dr = Math.sqrt(dx * dx + dy * dy) * (d.value / maxLinkWeight);

            // to avoid NaN error
            if(dr === Infinity) dr = 0;

            d.x0 = x0;
            d.y0 = y0;
            d.x1 = x1;
            d.y1 = y1;
            d.dr = dr;
        });

        svg.append("g")
            .attr("transform", "translate(" + width/2 + "," + height/2 + ")")
            .selectAll("path")
            .data(links)
            .enter()
            .append("path")
            .attr("stroke-width", function(d) { return 2*(d.value/maxLinkWeight) + "px"; })
            .attr("d", function(d) {
                var k = gapAngle/d3.max(links, function(d) { return d.value; });
                return path([
                    [d.x0 + rNodes * Math.cos(d.x0/startAngle), d.y0 + rNodes * Math.sin(d.y0/startAngle)],
                    [d.x1 + rNodes * Math.cos(d.x1/startAngle), d.y1 + rNodes * Math.sin(d.y1/startAngle)],
                    [d.x1 + (rNodes + d.dr) * Math.cos((d.x1 + (k/2)*d.value)/startAngle),
                     d.y1 + (rNodes + d.dr) * Math.sin((d.y1 + (k/2)*d.value)/startAngle)],
                    [d.x1 + rNodes * Math.cos((d.x1 + d.value*gapAngle)/startAngle), d.y1 + rNodes * Math.sin((d.y1 + d.value*gapAngle)/startAngle)],
                    [d.x1 + (rNodes + d.dr) * Math.cos((d.x1 + (1-(k/2))*d.value)/startAngle),
                     d.y1 + (rNodes + d.dr) * Math.sin((d.y1 + (1-(k/2))*d.value)/startAngle)],
                    [d.x1 + rNodes * Math.cos(d.x1/startAngle), d.y1 + rNodes * Math.sin(d.y1/startAngle)],
                    [d.x0 + rNodes * Math.cos(d.x0/startAngle), d.y0 + rNodes * Math.sin(d.y0/startAngle)]
                ]);
            })
            .attr("stroke", function(d) { return color(d.value); });

        svg.append("g")
            .selectAll("text")
            .data(nodes)
            .enter()
            .append("text")
            .text(function(d) { return d.name; })
            .attr("x", function(d) { return d.x; })
            .attr("y", function(d) { return d.y; })
            .attr("font-size", "17px")
            .attr("text-anchor", "middle");
    

四、citrus图片

Citrus(从图谱时序关系中的社区结构抽取)是一种新颖的数据可视化方法,主要应用于展示社交网络与可监督学习算法建立之间的关系。Citrus通常是一张图片,其内部包含多个图表,如热度图、圆形图、并列坐标轴图等,可以快速、准确地展示网络结构的有用信息。

下面是一个Citrus图片样例:

五、cimatron视图设置选取

Cimatron是一款计算机辅助设计与计算机辅助制造软件。在Cimatron中,视图是一种用来展示3D模型的窗口,Cimatron可以通过视图设置来更好地展示模型的各个部分。在一些情况下,Cimatron视图可以与Circular图结合起来,以便于更好地展示模型的结构。

下面是一个Cimatron视图设置选取的代码示例:

#导入Cimatron模型和视图设置包
import Cimatron.Model as cl
import Cimatron.View as cv

#打开Cimatron模型
m = cl.OpenModel("my_model.x_t")

#创建视图设置选项卡
vp = cv.PickViewport()
vp.CreateSettings()

#设置视角
vp.SetViewDirection(cv.cvdTop)

#设置视图显示选项
vp.ShowGrid()

#设置网格颜色
vp.SetGridColor((255, 255, 0))

#显示模型
vp.SetModel(m)

#保存视图设置选项卡
vp.SaveSettings("my_settings.xml")

原创文章,作者:QIPT,如若转载,请注明出处:https://www.506064.com/n/137958.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
QIPTQIPT
上一篇 2024-10-04 00:18
下一篇 2024-10-04 00:18

相关推荐

  • 画er图网站详细介绍

    一、网站介绍 画er图是一个画流程图的在线工具,提供多种流程图、思维导图的绘制模板,方便用户根据自身需求量身定制。该网站提供免费试用,可同时多人在线协作编辑。 画er图通过简单明了…

    编程 2025-04-25
  • Burp Suite Mac详细介绍

    Burp Suite Mac是一款全称Burp Suite Professional for Mac OS X的Mac版网络攻击测试工具,它能帮助安全测试人员对网络应用进行渗透测试…

    编程 2025-04-25
  • 百度地图拾取器详细介绍

    一、百度地图拾取器地址 百度地图拾取器是一款可快速获取百度地图具体位置坐标的工具。其地址为:https://api.map.baidu.com/lbsapi/getpoint/in…

    编程 2025-04-25
  • HTML5语义化标签的详细介绍

    一、<header> 标签 <header> 标签用于定义文档或节的页眉。通常包含导航元素和标题元素。 <header> <h1>这…

    编程 2025-04-24
  • fseek函数的详细介绍

    一、fseek在C语言中的意义 fseek函数是C语言中I/O库中的一个函数,它用于在文件中移动读写位置指针。这个函数可以在文件中随意移动读写位置指针从而实现对文件的随机读写操作。…

    编程 2025-04-24
  • Win11截图工具详细介绍

    一、Win11截图工具 Win11截图工具是Windows 11系统中自带的一个截图工具,它可以帮助用户快速地捕捉屏幕截图。Win11截图工具可以截取整个屏幕、活动窗口或自定义选定…

    编程 2025-04-23
  • Mac Nginx详细介绍

    一、安装Nginx 安装nginx最简便的方法是使用Homebrew。执行以下命令来安装Homebrew: /usr/bin/ruby -e “$(curl -fsSL https…

    编程 2025-04-23
  • jQuery remove() 方法的详细介绍

    一、选取 jQuery中的remove()方法是用于删除指定元素及其子元素的方法。它的基本语法如下: $(selector).remove(); 其中的selector可以是指定要…

    编程 2025-04-23
  • IDEAGIT回滚到指定版本的详细介绍

    在进行软件开发时,版本控制是非常重要的一部分。IDEAGIT是一款优秀的版本控制工具,它可以帮助开发者记录代码的修改历史并进行代码的版本管理。有时候我们会需要回滚到某个指定版本,本…

    编程 2025-04-23
  • C语言string.h中函数的详细介绍

    一、strcpy函数 strcpy函数是C语言中常用的字符串拷贝函数,其原型为: char *strcpy(char *dest, const char *src); 该函数的作用…

    编程 2025-04-23

发表回复

登录后才能评论