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.
ggplotcli: Universal ggplot2 converter - render any ggplot in the terminal- 16 Supported Geoms: points, lines, bars, histograms, density, smooth, area, boxplot, tile/heatmaps, 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.
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 ⡇ ⠐ ⢸
e ⡇ ⠐ ⢸
r 20.0 ⡇ ⠈ ⡀ ⡀ ⠈⢀ ⢸
⡇ ⠁ ⢀ ⠈ ⢸
G 15.0 ⡇ ⢸ ⠈ ⢸
a ⡇ ⠁ ⠂⠈⢐ ⠐ ⠠⢸
l 10.0 ⣇⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣸
2.0 3.0 4.0 5.0
wt
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
# 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 ASCII| 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) |
✓ |
# 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")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.
Block canvas - medium resolution using block characters:
ASCII canvas - basic ASCII for maximum compatibility:
- 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
plotcli is released under the LGPL-3 License.









