1

My current code plots a decision tree with labels displayed on the right side of the arrows. However, I want the True label to go on the left side. How does one achieve this?

library(data.tree)

tree <- Node$new("Are you happy?")
  leaf1 <- tree$AddChild("Party")
  leaf2 <- tree$AddChild("Take a nap")
SetEdgeStyle(leaf1, color = "black", label = "True", penwidth = 1, fontcolor = "black")
SetEdgeStyle(leaf2, color = "black", label = "False", penwidth = 1, fontcolor = "black")
plot(tree)
shsh
  • 684
  • 1
  • 7
  • 18

1 Answers1

1

I am not sure if it is possible using data.tree package. An alternative is using the DiagrammeR package with grViz function, which has a lot of option. Here is a reproducible example where the key is to add whitespace in the xlabel to determine set the position of the labels like this:

library(DiagrammeR)
grViz('
digraph {
forcelabels=true;
node [];
    {
        "Are you happy?"  -> Party [xlabel = "True    "];
        "Are you happy?" -> "Take a nap" [xlabel = "       False     "];
    }
}')

Created on 2022-09-09 with reprex v2.0.2

Quinten
  • 35,235
  • 5
  • 20
  • 53