Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/martin-borkovec/ggparty
https://github.com/martin-borkovec/ggparty
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/martin-borkovec/ggparty
- Owner: martin-borkovec
- Created: 2018-12-01T21:09:57.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2022-04-02T22:12:20.000Z (almost 3 years ago)
- Last Synced: 2024-10-28T17:24:19.326Z (4 months ago)
- Language: R
- Size: 1.8 MB
- Stars: 147
- Watchers: 9
- Forks: 14
- Open Issues: 10
-
Metadata Files:
- Readme: README.Rmd
Awesome Lists containing this project
- awesome-r-dataviz - ggparty - ggplot2 visualizations for the [partykit](http://partykit.r-forge.r-project.org/partykit/) package. (ggplot / Additional Plot Types)
README
---
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)