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/zh-tw/n/137958.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
QIPT的頭像QIPT
上一篇 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

發表回復

登錄後才能評論