簡體   English   中英

具有2D馬賽克的labeling_cells函數

[英]labeling_cells function with 2d mosaic

似乎有些事情(很多事情?)我不了解如何在軟件包vcdlabeling_cells使用mosaic ,因為我不斷遇到錯誤。

設定:

我有一個二維數組(更改行和列名以保護無辜):

tmparray
       C1    C2   C3    C4    C5    C6
P1  65241 15534 5754 12747 57902 48367
P2    205 28581 4819  7617  5504 34656
P3     27  3503 1473   757  3308 15363
P4 417580  5967 5353   636   514  9758
P5  31482   915  249   914   328  1301
P6  75501  4307  294   176    27  8376
P7  43589  2864  465   179    61 12631
P8  64095  1008  335   288     3  7438

mosaic(tmparray)我提供了預期的繪圖(rep太低而無法發布圖像)。

我想為每個單元格添加文本標簽,僅顯示tmparray > 1000的值。 按照labeling_cells的文檔,我嘗試以下操作:

celltxt <- ifelse(tmparray < 1000, NA, tmparray/1000)
celltxt
        C1     C2    C3     C4     C5     C6
P1  65.241 15.534 5.754 12.747 57.902 48.367
P2      NA 28.581 4.819  7.617  5.504 34.656
P3      NA  3.503 1.473     NA  3.308 15.363
P4 417.580  5.967 5.353     NA     NA  9.758
P5  31.482     NA    NA     NA     NA  1.301
P6  75.501  4.307    NA     NA     NA  8.376
P7  43.589  2.864    NA     NA     NA 12.631
P8  64.095  1.008    NA     NA     NA  7.438

labeling_cells(text = celltxt)(tmparray)

導致以下錯誤:

# Error in ifelse(abbreviate_varnames, sapply(seq_along(dn), function(i) abbreviate(dn[i],  : replacement has length zero

誰能指出如何使標簽生效?

好的,所以我假設使用class(tmparray)=="matrix" 這似乎可以很好地進行繪制,但是如果您要使用labeling_cells ,則需要將其轉換為表格,並確保添加命名維度。 你可以這樣做

tmparray <- as.table(tmparray)
names(dimnames(tmparray))<-c("P","C")

所以,當你創建celltext現在

celltxt <- ifelse(tmparray < 1000, NA, tmparray/1000)

它也將是一個具有相同dimnames的表。

您必須做的另一件事是將pop=F傳遞給mosaic 這樣會將網格視口結構保留在適當的位置,以便labeling_cells函數可以找到labeling_cells的正確位置。 所以你可以用

mosaic(tmparray , pop=F)
labeling_cells(text = celltxt, margin=0)(tmparray)

導致 帶標簽的馬賽克圖

(我確實將這些值四舍五入到小數點后一位,以使內容更整潔)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM