【问题标题】:R circlize chord and grid colouringR circlize 和弦和网格着色
【发布时间】:2017-03-24 11:59:12
【问题描述】:

我有一个包含两列的数据集。一个是数据类别,一个是我的样本。我以 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)]

【问题讨论】:

  • 编辑:对我的前几行代码进行了快速更正

标签: r colors circlize


【解决方案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)"

要获取所有品牌的名称,您可以这样做(使用[[ 返回一个“纯”向量):

> 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]])])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 2019-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 2021-02-14
    相关资源
    最近更新 更多