Построение SOM: как изменить цвета?

У меня есть следующий набор данных.

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

Если я это сделаю, я получу следующую цифру: введите здесь описание изображения

Мне не нравится, как он автоматически устанавливает цвета, потому что это кажется нелогичным. Я хотел бы установить пять цветов, начиная с белого и становясь светло-красным, нормальным красным, темно-красным, темно-красным. В противном случае хотя бы инвертируйте цвета фигуры.

Я не могу использовать параметр panel.name= и т. д. и т. д. Как я могу изменить цвета? Если я использую ggplot, я теряю свойство type = "counts", которое у меня есть для построения сомов.


person Andrea Ianni ௫    schedule 09.05.2016    source источник
comment
Вы видели пример в plot.kohonen, где они используют pallette.name? Это функция. В частности, на этой странице справки есть функция coolBlueHotRed, которая передается pallette.name. Это отлично работает для type = "counts".   -  person David    schedule 10.05.2016
comment
Да, в конце концов, я использовал его. Тем не менее, я хотел бы изменить цвета, но я не понял, как это сделать. Например шкала цветов на красном. coolBlueHotRed — это функция Может быть, мне следует написать функцию, которая производит нужные мне цвета. Я посмотрю. А пока спасибо за ваш комментарий.   -  person Andrea Ianni ௫    schedule 10.05.2016
comment
Вместо этого в функции coolBlueHotRed измените rainbow на heat.colors. Это даст вам ряд цветов от красного до оранжевого и желтого.   -  person David    schedule 19.05.2016
comment
Я должен был добавить, что на самом деле нет встроенной палитры красных, и heat.colors() имеет больше всех доступных красных. Вы можете создавать собственные наборы цветов, но вам придется создавать диапазон цветов самостоятельно. Такие функции, как rgb() и hsv(), преобразуют цвета в форматах RGB или HSV в шестнадцатеричные имена, которые можно использовать для указания пользовательских цветов. Также посмотрите на colors() для встроенного массива цветов, который знает R.   -  person David    schedule 19.05.2016
comment
Спасибо, работает отлично. Я думаю, вы должны вставить это как ответ!   -  person Andrea Ianni ௫    schedule 19.05.2016
comment
Связано также со следующим вопросом вопросы/25965167/   -  person Nemesi    schedule 30.11.2018