Я использую treemap
из пакета treemap
для создания визуального представления.
Проще говоря, я создаю treemap
из таблицы значений и, в зависимости от значений, отображаю красный, серый и зеленый цвета в секции treemap
.
При определенных обстоятельствах это работает, а при других - нет, и я получаю ошибку, которую не могу понять:
Error in do.call("format", args.legend) : second argument must be a list
Пока кажется, что при установке type = "value"
, если все поля в родительской группе имеют размер 0
, и вы пытаетесь указать цвета, возникает ошибка. Однако, если у вас есть два поля в родительской группе и вы установите одно в ноль, оно будет работать до тех пор, пока обе спецификации цвета в этих группах не совпадают.
Я постараюсь изложить это ниже.
Это работает: с красным, серым и зеленым полем, появляющимся в зависимости от того, были ли они назначены -1, 0
или 1
в столбце Colour
.
# This is just c(red, grey, green)
my_colour_pal <- c("#bc0303", "#4b5566", "#17a008")
df <-
data.frame(Group1 = c("one", "one", "two"),
Group2 = c("val1", "val2", "val3"),
Value = c(10, 10, 10),
Colour = c(-1, 0, 1), stringsAsFactors = FALSE)
treemap(df, index = c("Group1", "Group2"), type = "value",
vSize = "Value", vColor = "Colour", palette = my_colour_pal)
Это также работает: точно так же, за исключением того, что одна коробка пропала, потому что Value
равно 0
. Как и ожидалось, цветовая карта работает.
df <-
data.frame(Group1 = c("one", "one", "two"),
Group2 = c("val1", "val2", "val3"),
Value = c(10, 0, 10),
Colour = c(-1, 0, 1), stringsAsFactors = FALSE)
treemap(df, index = c("Group1", "Group2"), type = "value",
vSize = "Value", vColor = "Colour", palette = my_colour_pal)
Это не работает: оба Group1
назначения для one
имеют Value
, установленное в ноль
df <-
data.frame(Group1 = c("one", "one", "two"),
Group2 = c("val1", "val2", "val3"),
Value = c(0, 0, 10),
Colour = c(-1, 0, 1), stringsAsFactors = FALSE)
treemap(df, index = c("Group1", "Group2"), type = "value",
vSize = "Value", vColor = "Colour", palette = my_colour_pal)
Error in do.call("format", args.legend) : second argument must be a list
Однако, если я делаю то же самое и устанавливаю третье значение на 0
, тогда оно отлично работает
my_colour_pal <- c("#bc0303", "#4b5566", "#17a008")
df <-
data.frame(Group1 = c("one", "one", "two"),
Group2 = c("val1", "val2", "val3"),
Value = c(10, 10, 0),
Colour = c(-1, 0, 1), stringsAsFactors = FALSE)
treemap(df, index = c("Group1", "Group2"), type = "value",
vSize = "Value", vColor = "Colour", palette = my_colour_pal)
Наконец, если я сделаю то же самое, что и в прошлый раз, но выставлю оба цвета в строке 1 и 2 одинаковыми, например. -1
для "красного", тогда я получаю ту же ошибку,
df <-
data.frame(Group1 = c("one", "one", "two"),
Group2 = c("val1", "val2", "val3"),
Value = c(10, 10, 0),
Colour = c(-1, -1, 1), stringsAsFactors = FALSE)
treemap(df, index = c("Group1", "Group2"), type = "value",
vSize = "Value", vColor = "Colour", palette = my_colour_pal)
Error in do.call("format", args.legend) : second argument must be a list
В итоге
Кажется, что ошибка возникает, если оба поля в родительской группе равны нулю и если оба поля в родительской группе имеют значение Color, установленное на одно и то же число.