plotcli: Command-Line Plots for R
plotcli is an R package that brings the power of command-line plotting to your R environment. With a simple and intuitive interface, plotcli allows you to create and customize a variety of plot types directly in your console using Unicode Braille characters and ANSI colors.
Features
ggplotcli: Universal ggplot2 converter - render any ggplot in the terminal- 14 Supported Geoms: points, lines, bars, histograms, density, smooth, area, segments, and more
- Faceting: Full support for
facet_wrap()andfacet_grid() - Theme Auto-Detection: Automatically respects ggplot2 themes (borders, grids)
- Multiple Canvas Types: Braille (high-res), Block, or ASCII
- Colored Output: Full ANSI color support for aesthetics
- R6 Class Interface: Direct plotting with
plotcliclass
plotcli is heavily inspired by the excellent UnicodePlots.jl library.
Quick Start
library(plotcli)
library(ggplot2)
# Any ggplot2 plot works!
p <- ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl))) +
geom_point() +
labs(title = "MPG vs Weight")
# Render in terminal
ggplotcli(p)Output:
MPG vs Weight
35.0 ⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤
⠒⠒⣗⢒⠒⠒⠒⠒⡗⠒⠚⠒⠒⠒⡗⠒⠒⠒⠒⠒⡗⠒⠒⠒⠒⠒⡗⠒⠒⠒⠒⠒⡗⠒⠒⠒⠒⠒⡗⠒⠒
30.0 ⣉⣉⣏⣉⣉⣉⣉⣉⣏⣉⣉⣉⣉⣉⣏⣉⣉⣉⣉⣉⣏⣉⣉⣉⣉⣉⣏⣉⣉⣉⣉⣉⣏⣉⣉⣉⣉⣉⣏⣉⣉
m ⠤⠤⡧⠤⠤⠤⠤⠬⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤
p 25.0 ⠒⠒⡗⠒⠒⠒⠒⠒⡗⠒⠒⠒⡒⠒⡗⠒⠒⠒⠒⠒⡗⠒⡚⠒⠒⠒⡗⠒⠒⠒⠒⠒⡗⠒⠒⠒⠒⠒⡗⠒⠒
g 20.0 ⣉⣉⣏⣉⣉⣉⣉⣉⣏⣉⣉⣉⣉⣉⣏⣙⣉⣙⣙⣉⣏⣉⣙⣉⣉⣉⣏⣉⣉⣉⣉⣉⣏⣉⣉⣉⣉⣉⣏⣉⣉
⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠼⡧⠤⠤⡤⠬⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤
15.0 ⠒⠒⡗⠒⠒⠒⠒⠒⡗⠒⠒⠒⠒⠒⡗⠒⠒⠒⠒⠒⡗⠒⠒⠒⠒⠲⡷⡖⠒⠲⠒⠒⡗⠓⠒⠒⠒⠒⡗⠒⠒
⣉⣉⣏⣉⣉⣉⣉⣉⣏⣉⣉⣉⣉⣉⣏⣉⣉⣉⣉⣉⣏⣉⣉⣉⣉⣉⣏⣉⣉⣉⣋⣉⣏⣉⣉⣉⣉⣉⣏⣉⣉
10.0 ⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠤⠤⠤⡧⠤⠤⠦⠤⠦⡧⠤⠤
2.0 3.0 4.0 5.0
wt Faceting Example
p <- ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point(color = "blue") +
facet_wrap(~cyl) +
labs(title = "MPG by Cylinders") +
theme_bw() # Automatically adds borders!
ggplotcli(p, width = 70, height = 16)Output:
MPG by Cylinders
4 6 8
⡏⠉⠩⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⢹ ⡏⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⢹ ⡏⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⠉⢹
⡇ ⠁ ⢸ ⡇ ⢸ ⡇ ⢸
30.0⡇⠉ ⢸ ⡇ ⢸ ⡇ ⢸
⡇ ⢂ ⢸ ⡇ ⢸ ⡇ ⢸
⡇ ⠈⡀⢀ ⠈ ⢸ ⡇ ⡀⡀⢀ ⢸ ⡇ ⢸
20.0⡇ ⢸ ⡇ ⠠ ⠠ ⢸ ⡇ ⢀ ⠠ ⢸
⡇ ⢸ ⡇ ⠘ ⢸ ⡇ ⠄⢀ ⢸
⡇ ⢸ ⡇ ⢸ ⡇ ⠈⠐⡂⠂ ⠠⢸
10.0⣇⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣸ ⣇⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣸ ⣇⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣒⣸
2.0 4.0 2.0 4.0 2.0 4.0 Styling Options
# With border and grid
ggplotcli(p, border = TRUE, grid = "major")
# Different canvas types
ggplotcli(p, canvas_type = "braille") # High resolution (default)
ggplotcli(p, canvas_type = "block") # Medium resolution
ggplotcli(p, canvas_type = "ascii") # Basic ASCIISupported Geoms
| Geom | Status |
|---|---|
geom_point | ✓ |
geom_line, geom_path | ✓ |
geom_bar, geom_col, geom_histogram | ✓ |
geom_density | ✓ |
geom_smooth | ✓ |
geom_area | ✓ |
geom_segment, geom_hline, geom_vline | ✓ |
geom_rect | ✓ |
geom_text | ✓ |
geom_boxplot | ✓ |
geom_tile (heatmaps) | Planned |
Installation
# From CRAN
install.packages("plotcli")
# Or from GitHub for the latest development version
# Using remotes (recommended)
remotes::install_github("cheuerde/plotcli")
# Or using devtools
devtools::install_github("cheuerde/plotcli")Direct R6 Class Usage
For more control, use the plotcli R6 class directly:
# Using plotcli R6 class directly
pc <- plotcli$new(width = 60, height = 20)
pc$add_data(mtcars$wt, mtcars$mpg)
pc$add_title("MPG vs Weight")
pc$print_plot()Check the vignettes for all possible ways of using the package.
Showcase
Similar Projects
- txtplot: The OG in R
- r-plot: Collection of excellent terminal plotting functions
- UnicodePlots.jl: The gold standard for terminal graphics
- plotext: Powerful terminal graphics in python
License
plotcli is released under the LGPL-3 License.