Radarchart Использование fmsb в R - PullRequest
0 голосов
/ 28 января 2020

Я пытался сделать radarchart, используя fmsb, но у меня возникли некоторые проблемы с моим сценарием.

Если кто-то может помочь, я буду очень признателен.

мой последовательность радиокарт должна быть между (0,2) и 0,2. Но когда я пробую график, он выходит за границы. мой сценарий:

library("fmsb")

данные:

df <- data.frame("hours" = 0:23, 
  "max_value" = 2,"min_value" = 0,"CallsProportion" = (c(1.583333333
,1.291666667,1.166666667,1,0.041666667,0.833333333,0.625
,0.791666667,0.75,0.458333333,0.833333333,0.625,0.708333333,0.458333333,0.291666667,0.416666667,0.625,0.458333333,1.208333333,2.375,2.166666667,2.208333333,1.625,1.541666667)))

radarchart(df, axistype = 1,
       caxislabels = seq(0,2,0.2), 
       cglcol = "grey",
       vlcex = 0.8, cglty = 1, 
       cglwd = 0.5,axislabcol = "grey", 
       pcol = "black",plwd = 1.8, plty = 1)

radarchart

1 Ответ

0 голосов
/ 30 января 2020

Это проблема формата данных. Функция fmsb::radarchart нуждается в объекте класса "data.frame" в качестве первого аргумента, "matrix" не будет этого делать. С help("radarchart"):

Фрейм данных, который будет использоваться для рисования radarchart. Если maxmin равно TRUE, это должно включать максимальные значения в виде строки 1 и минимальные значения в виде строки 2 для каждой переменной, а фактические данные следует указывать в виде строки 3 и нижней строки. Количество столбцов (переменных) должно быть больше 2.

Обратите внимание, что maxmin = TRUE является настройкой по умолчанию.

Поэтому выполните следующие действия.

  1. Получите диапазон значений, их минимум и максимум.
  2. Создайте матрицу из 2 строк и столько столбцов, сколько столбцов в исходный фрейм данных.
  3. Свяжите матрицу со строками данных.
  4. Установить имена столбцов для первого столбца df, столбец hours.

В этом случае для построения необходим только один вектор, вектор CallsProportion.

r <- range(df$CallsProportion)
m <- matrix(r[2:1], nrow = 2, ncol = nrow(df))
df2 <- rbind.data.frame(m, df$CallsProportion)
names(df2) <- df$hours

radarchart(df2, axistype = 1,
           caxislabels = seq(0, 2, 0.2), 
           cglcol = "grey",
           vlcex = 0.8, cglty = 1, 
           cglwd = 0.5, axislabcol = "grey", 
           pcol = "black", plwd = 1.8, plty = 1)

enter image description here

...