【问题标题】:Plotting a SOM: how to change the colours?绘制一个儿子:如何改变颜色?
【发布时间】:2016-05-09 08:31:31
【问题描述】:

我有以下数据集。

> ds
          dataset_clustering.CODICE_DOMANDA  FAT_AZI_MLN IMPORTO_PROGETTO NUM_ADDETTI Modelli Formazione
    22870                             22870 4.855849e-03       0.25386313 0.001403368       0          0
    22893                             22893 3.606493e-04       0.40618102 0.115209837       0          0
    16258                             16258 4.433197e-04       0.58254746 0.140670944       0          0
    14684                             14684 6.189941e-04       0.35717439 0.304330393       0          0
    12873                             12873 2.480110e-05       0.65121413 0.022654370       0          0
    12933                             12933 2.603806e-02       0.02551876 0.017107725       0          1
    12047                             12047 7.130316e-05       0.20094923 0.005012029       0          0
    22880                             22880 1.963420e-05       0.16556291 0.015503876       0          0
    11479                             11479 2.856260e-03       0.57615894 0.786688051       0          1
    20836                             20836 3.089804e-04       0.20640177 0.004611067       0          0
          Investimento Sostituzione CAMPANIA COSTRUZIONI ESITO
    22870            1            0        1           1     B
    22893            1            0        1           1     R
    16258            1            0        1           1     P
    14684            1            0        1           1     P
    12873            1            0        1           1     B
    12933            0            0        1           1     B
    12047            1            0        1           1     R
    22880            1            0        1           1     B
    11479            0            0        1           1     P
    20836            1            0        1           1     B

我想训练一个对数据集进行聚类的 SOM:

# Train a SOM
grid_type<-'hexagonal' # 'rectangular'
library(kohonen)
num_rows <- 3
num_cols <- 3
r_length <- 100 # 100 1000 10000 100000
tpsom<-paste(grid_type," (",num_rows,"x",num_cols,")")
set.seed(13)
#-------------------------------------------------------------------
somres <- som(as.matrix(ds[,2:length(colnames(ds))-1]),
              grid=somgrid(ydim=num_rows,xdim=num_cols,grid_type),
              rlen = r_length # default = 100
)
# Create a plot of the som
png("Example.png")
  par(mar=c(5.1,4.1,6.1,2.1))
  plot(somres,
       type = "counts",
       #main=paste("Analisi SOM - ","Numero di input per cella","\n")
       main=paste("Analisi SOM\n","Numero di input per cella","\n",
                  "Mappa: ",tpsom
       )
  )
dev.off()

如果我这样做,我会得到下图:

我不喜欢它自动设置颜色的方式,因为它看起来违反直觉。我想设置五种颜色,从白色开始变成浅红色,普通红色,深红色,深红色。否则,至少反转图形的颜色。

我不能使用参数 palette.name= 等等。 如何修改颜色?如果我使用 ggplot,我会丢失我绘制 som 的属性 type = "counts"

【问题讨论】:

  • 你看过plot.kohonen中他们使用pallette.name的例子吗?它是一个函数。具体来说,在该帮助页面中,有一个名为coolBlueHotRed 的函数被传递给pallette.name。这适用于type = "counts"
  • 是的,最后我用过了。不过,我本来想改变颜色,但我不明白怎么做。例如红色上的颜色比例。 coolBlueHotRed 是一个函数 也许我应该编写一个函数来生成我想要的颜色。我会明白的。同时,感谢您的评论。
  • 在函数coolBlueHotRed中,将rainbow改为heat.colors。这将为您提供一系列红色到橙色到黄色的颜色范围。
  • 我应该补充一点,实际上并没有内置的红色调色板,heat.colors() 拥有最多可用的红色。您可以制作自定义颜色集,但您必须自己创建颜色范围。 rgb()hsv() 等函数将 RGB 或 HSV 格式的颜色转换为十六进制名称,可用于指定自定义颜色。另请查看colors(),了解 R 知道的内置颜色数组。
  • 谢谢,它工作得很好。我认为你应该插入它作为答案!

标签: r plot colors som self-organizing-maps


【解决方案1】:

您是否考虑过使用“功能”来创建自己的调色板?您可以根据以下代码更改它们(n、alpha、rev = True/False):

 customisedcolors <- function(n, alpha = 1) {
  heat.colors(n, alpha=alpha)[n:1]
}

最好的祝愿, 启

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2012-01-23
    • 1970-01-01
    • 2019-01-13
    • 2018-02-14
    • 1970-01-01
    相关资源
    最近更新 更多