[英]R: circlize chord diagram with images as labels?
是否可以將圖像放置在circlize
chordDiagram
的標簽上?
例如,我將大洲的SVG輪廓手動放置在標簽上。 我想知道是否有一種編程的方式來實現這一目標。
這是一個入門示例,我希望能夠向其添加圖像標簽。 請注意, circlize
網站上有一個示例似乎circlize
我的要求 :
但我無法將其與以下示例結合使用:
mat = matrix(sample(100, 25), 5)
rownames(mat) = letters[1:5]
colnames(mat) = letters[1:5]
library(circlize)
chordDiagram(mat, directional = TRUE, transparency = 0.5)
在您的示例中,您需要在圓的最外面創建一個空軌跡,然后再返回到該空軌跡以添加柵格圖像。
在下面的示例中, preAllocateTracks
參數用於定義應放置多少空軌道。 有關此參數的更多說明,請參閱:http: //zuguang.de/circlize_book/book/advanced-usage-of-chorddiagram.html#organization-of-tracks
mat = matrix(sample(100, 25), 5)
rownames(mat) = letters[1:5]
colnames(mat) = letters[1:5]
library(circlize)
library(png)
tmp = tempfile()
download.file("https://www.google.de/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png", tmp)
image = as.raster(readPNG(tmp))
ratio = ncol(image)/nrow(image)
chordDiagram(mat, directional = TRUE, transparency = 0.5,
preAllocateTracks = 1)
circos.track(track.index = 1, panel.fun = function(x, y) {
xcenter = get.cell.meta.data("xcenter")
ycenter = get.cell.meta.data("ycenter")
pos = circlize:::polar2Cartesian(circlize(xcenter, ycenter))
rasterImage(image,
xleft = pos[1, 1] - 0.05*ratio,
ybottom = pos[1, 2] - 0.05,
xright = pos[1, 1] + 0.05*ratio,
ytop = pos[1, 2]+ 0.05)
}, bg.border = NA)
也可能但不容易旋轉圖像以使其面對圓心,因為rasterImage()
具有angle
參數,該參數允許旋轉圖像,但旋轉是相對於圖像的左下角,而不是相對於圖像的左下角圖像的中心。
編輯:我在軟件包(版本> = 0.4.1)中添加了一個新函數circos.raster()
,這使得添加柵格圖像更加容易。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.