R circlize和弦和网格着色
R circlize chord and grid colouring
我有一个包含两列的数据集。一个是数据类别,一个是我的样本。我以 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)]
看到othercol
的值就知道是怎么回事了:
> othercol
[1] "c(\"Mazda RX4\", \"Mazda RX4 Wag\", \"Datsun 710\", \"Hornet 4 Drive\", \"Hornet Sportabout\", \"Valiant\", \"Duster 360\", \"Merc 240D\", \"Merc 230\", \"Merc 280\", \"Merc 280C\", \"Merc 450SE\", \"Merc 450SL\", \"Merc 450SLC\", \"Cadillac Fleetwood\", \"Lincoln Continental\", \"Chrysler Imperial\", \"Fiat 128\", \"Honda Civic\", \"Toyota Corolla\", \"Toyota Corona\", \"Dodge Challenger\", \"AMC Javelin\", \"Camaro Z28\", \"Pontiac Firebird\", \"Fiat X1-9\", \"Porsche 914-2\", \"Lotus Europa\", \"Ford Pantera L\", \"Ferrari Dino\", \"Maserati Bora\", \"Volvo 142E\"\n)"
要获取所有品牌的名称,您可以简单地执行(使用 [[
returns 一个 "pure" 向量):
> brand = mtCARS1[[1]]
> brand
[1] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710"
[4] "Hornet 4 Drive" "Hornet Sportabout" "Valiant"
[7] "Duster 360" "Merc 240D" "Merc 230"
[10] "Merc 280" "Merc 280C" "Merc 450SE"
[13] "Merc 450SL" "Merc 450SLC" "Cadillac Fleetwood"
[16] "Lincoln Continental" "Chrysler Imperial" "Fiat 128"
[19] "Honda Civic" "Toyota Corolla" "Toyota Corona"
[22] "Dodge Challenger" "AMC Javelin" "Camaro Z28"
[25] "Pontiac Firebird" "Fiat X1-9" "Porsche 914-2"
[28] "Lotus Europa" "Ford Pantera L" "Ferrari Dino"
[31] "Maserati Bora" "Volvo 142E"
然后您可以将蓝色分配给所有这些品牌并构建 grid.col
向量:
othercol = structure(rep("blue", length(brand)), names = brand)
grid.col = c("4" = "red", "3" = "green", "5" = "yellow", othercol)
chordDiagram(as.data.frame(mtCARS1), grid.col = grid.col,
col = grid.col[as.character(mtCARS1[[2]])])
我有一个包含两列的数据集。一个是数据类别,一个是我的样本。我以 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)]
看到othercol
的值就知道是怎么回事了:
> othercol
[1] "c(\"Mazda RX4\", \"Mazda RX4 Wag\", \"Datsun 710\", \"Hornet 4 Drive\", \"Hornet Sportabout\", \"Valiant\", \"Duster 360\", \"Merc 240D\", \"Merc 230\", \"Merc 280\", \"Merc 280C\", \"Merc 450SE\", \"Merc 450SL\", \"Merc 450SLC\", \"Cadillac Fleetwood\", \"Lincoln Continental\", \"Chrysler Imperial\", \"Fiat 128\", \"Honda Civic\", \"Toyota Corolla\", \"Toyota Corona\", \"Dodge Challenger\", \"AMC Javelin\", \"Camaro Z28\", \"Pontiac Firebird\", \"Fiat X1-9\", \"Porsche 914-2\", \"Lotus Europa\", \"Ford Pantera L\", \"Ferrari Dino\", \"Maserati Bora\", \"Volvo 142E\"\n)"
要获取所有品牌的名称,您可以简单地执行(使用 [[
returns 一个 "pure" 向量):
> brand = mtCARS1[[1]]
> brand
[1] "Mazda RX4" "Mazda RX4 Wag" "Datsun 710"
[4] "Hornet 4 Drive" "Hornet Sportabout" "Valiant"
[7] "Duster 360" "Merc 240D" "Merc 230"
[10] "Merc 280" "Merc 280C" "Merc 450SE"
[13] "Merc 450SL" "Merc 450SLC" "Cadillac Fleetwood"
[16] "Lincoln Continental" "Chrysler Imperial" "Fiat 128"
[19] "Honda Civic" "Toyota Corolla" "Toyota Corona"
[22] "Dodge Challenger" "AMC Javelin" "Camaro Z28"
[25] "Pontiac Firebird" "Fiat X1-9" "Porsche 914-2"
[28] "Lotus Europa" "Ford Pantera L" "Ferrari Dino"
[31] "Maserati Bora" "Volvo 142E"
然后您可以将蓝色分配给所有这些品牌并构建 grid.col
向量:
othercol = structure(rep("blue", length(brand)), names = brand)
grid.col = c("4" = "red", "3" = "green", "5" = "yellow", othercol)
chordDiagram(as.data.frame(mtCARS1), grid.col = grid.col,
col = grid.col[as.character(mtCARS1[[2]])])