我有一个包含两列的数据集。一个是数据类别,一个是我的样本。我以 mtcars 为例
library(circlize)
library(data.table)
mtCARS<- mtcars
setDT(mtCARS, keep.rownames = TRUE)[]
mtCARS1<- mtCARS[,c(1,11)]
colnames(mtCARS1)<- c("Brand", "gear")
现在假设我对汽车名称(现在称为品牌)感兴趣,因为我的样品和齿轮是类别。我想要两件事
1.从类别发出的和弦,在这种情况下,齿轮是三种颜色,对应于类别编号。
2.所有样品(在本例中为品牌)的网格颜色为相同颜色。
如果你在哪里执行
chordDiagram(as.data.frame(mtCARS1)
您会为所有内容分配随机颜色,并且从类别(品牌)发出的和弦将被多重着色。
现在需要执行上述命令(我认为)如下
chordDiagram(as.data.frame(mtCARS1), col=col, grid.col = grid.col)
请注意,我已经定义了 col 和 grid.col 函数,我认为需要对其进行定义以分别解决我的第 1 点和第 2 点,这是我遇到问题的地方。
到目前为止,对于和弦颜色(第 1 点),我已经尝试了以下方法,但没有奏效
library(RColorBrewer)
col<- colorRampPalette(c("red", "green", "blue"), space= "rgb")(30)
对于网格颜色(第 2 点)我尝试过
othercol<- as.character(mtCARS1[,1])
grid.col = c("4" = "red", "3" = "green", "5" = "yellow", othercol = "blue")
这让我得到了我想要的类别(齿轮)颜色,但对于示例颜色(品牌),网格颜色不是蓝色。
请注意,我的实际数据是作为数据框而不是矩阵加载的。
注意:第一个点的解决方案是颠倒列的顺序,因为它是定义所用颜色数量的第一列。因此做
mtCARS1<- mtCARS[,c(11,1)]