Во-первых ... Я мог неправильно подходить к этой задаче.Я новичок в функциональности DiagrammeR, и если то, что я понимаю в DiagrammeR, ошибочно с точки зрения программирования, я не удивлюсь.
Проблема возникает в выражении 'node [fillcolor = COLOR]'код.
Если я просто напишу 'fillcolor = Green, style = fill' вместо fillcolor = object1, то это работает отлично.Точно так же, если я заменю Зеленый на «Малиновый» или любой другой цвет, проблем не возникнет.
Моя проблема в том, что я хочу, чтобы этот цвет менялся в зависимости от значения объекта, которое определяется условием.По сути, если слишком мало больных собираются обратиться к врачу, это должно поднять красный флажок в отчете, который я создаю ежедневно, и программирование этого вручную каждый день будет немного болезненным.
Что я пробовал:
вместо указания цвета, я пытаюсь использовать вывод условного объекта в качестве цвета заливки (например, то, что я пробовал ниже)
fillcolor = object1 - заполняет последнее поле черным
fillcolor = ', object1' - окончательное поле снова заполняется черным цветом
fillcolor = object1 [1] - выводит результаты с ошибкой
fillcolor = ', object1[1] '- окончательное поле снова заполнено черным цветом
# Just create some random data for a flow chart
a = 100 # Total people
b = 60 # Number of total that are sick
c = 19 # Number of sick that saw a doctor
d = round(c/b * 100) # percent of sick who saw a doctor
# create a flowchart-list-object
flow <- list(a=a, b=b, c=c, d=d)
# this could be where I am going wrong
# Condition that determines if the Percentage of sick people who saw a doctor
# is above 40%
if (d > 40) {
object1 <- 'Green'
} else
object1 <- 'Crimson'
# Output the flowchart using grViz
DiagrammeR::grViz("
digraph dot {
graph[layout = dot, fontsize = 15]
# Node numbers with labelled text
node [shape = box,
width = 3,
fontname = Helvetica]
a [label = '@@1']
b [label = '@@2']
c [label = '@@3']
# First set of node to edge connections
a -> b -> c
node [fillcolor = object1, style = filled]
d [label = '@@4']
c -> d
}
[1]: paste0('Total Sick \\n ', flow$a, '')
[2]: paste0('Number of total sick \\n ', flow$b, '')
[3]: paste0('Number of Sick who see a doctor \\n ', flow$c, '')
[4]: paste0('% of sick who see a doctor \\n ', flow$d, '')
")
Я ожидаю, что последнее поле на блок-схеме будет зеленым, если процент заболевших выше 40% или малиновым (красный) если оно ниже 40%.
Спасибо за помощь / помощь!