一、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