-
Notifications
You must be signed in to change notification settings - Fork 14
/
README.Rmd
93 lines (71 loc) · 3.51 KB
/
README.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
---
title: "ggparty"
output: rmarkdown::github_document
---
**ggplot2** visualizations for the **partykit** package.
## Install
```{r, eval=FALSE}
devtools::install_github("martin-borkovec/ggparty",
dependencies = TRUE)
```
## Example
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE,
dpi = 300,
fig.path = "man/figures/README-")
options(warn = -1)
```
```{r, warning = FALSE, message = FALSE, fig.width = 15, fig.height = 10}
library(ggparty)
data("TeachingRatings", package = "AER")
tr <- subset(TeachingRatings, credits == "more")
tr_tree <- lmtree(eval ~ beauty | minority + age + gender + division + native +
tenure, data = tr, weights = students, caseweights = FALSE)
ggparty(tr_tree,
terminal_space = 0.5,
add_vars = list(p.value = "$node$info$p.value")) +
geom_edge(size = 1.5) +
geom_edge_label(colour = "grey", size = 6) +
geom_node_plot(gglist = list(geom_point(aes(x = beauty,
y = eval,
col = tenure,
shape = minority),
alpha = 0.8),
theme_bw(base_size = 15)),
scales = "fixed",
id = "terminal",
shared_axis_labels = T,
shared_legend = T,
legend_separator = T,
predict = "beauty",
predict_gpar = list(col = "blue",
size = 1.2)
) +
geom_node_label(aes(col = splitvar),
line_list = list(aes(label = paste("Node", id)),
aes(label = splitvar),
aes(label = paste("p =", formatC(p.value, format = "e", digits = 2)))),
line_gpar = list(list(size = 12, col = "black", fontface = "bold"),
list(size = 20),
list(size = 12)),
ids = "inner") +
geom_node_label(aes(label = paste0("Node ", id, ", N = ", nodesize)),
fontface = "bold",
ids = "terminal",
size = 5,
nudge_y = 0.01) +
theme(legend.position = "none")
```
## How to Use
**ggparty** tries to stick as closely as possible to **ggplot2**'s grammar of graphics. The basic building blocks to a **ggparty** plot are:
* **ggparty()** replaces the usual `ggplot()`. Takes a object of class `'party'` instead of a `'data.frame'`.
* **geom_edge()** draws the edges between the nodes
* **geom_edge_label()** labels the edges with the corresponding split breaks
* **geom_node_label()** labels the nodes with the split variable, node info or anything
else. The shorthand versions of this geom **geom_node_splitvar()** and
**geom_node_info()** have the correct defaults to write the split variables in
the inner nodes resp. the info in the terminal nodes.
* **geom_node_plot()** creates a custom ggplot at the location of the node
Make sure to check out the [**wiki**](https://github.com/martin-borkovec/ggparty/wiki) or the vignettes for detailed information on the usage of **ggparty**.
If you find any bugs or have any suggestions or questions feel free to contact me or post an issue! Thanks for your support!
[![Build Status](https://travis-ci.org/martin-borkovec/ggparty.svg?branch=master)](https://travis-ci.org/martin-borkovec/ggparty)