Skip to content

cheuerde/plotcli

Repository files navigation

plotcli: Command-Line Plots for R

CRAN status CRAN checks Downloads Downloads

Boxplot

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
  • 16 Supported Geoms: points, lines, bars, histograms, density, smooth, area, boxplot, tile/heatmaps, and more
  • Faceting: Full support for facet_wrap() and facet_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 plotcli class

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 ⡇             ⠐                                ⢸
e      ⡇                              ⠐               ⢸
r 20.0 ⡇                ⠈  ⡀    ⡀    ⠈⢀               ⢸
       ⡇                     ⠁ ⢀ ⠈                    ⢸
G 15.0 ⡇                                  ⢸     ⠈     ⢸
a      ⡇                              ⠁   ⠂⠈⢐  ⠐        ⠠⢸
l 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 ASCII

Supported 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)

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

Density Plots with Fill Colors

Density Plot

Heatmaps with Diverging Color Scales

Heatmap

Faceted Plots (facet_wrap)

Faceted Plot

Boxplots with Outliers

Boxplot

Histogram with Density Overlay

Histogram

Line Charts with Smoothing

Line Chart

Bar Charts

Bar Chart

Canvas Types

Block canvas - medium resolution using block characters:

Block Canvas

ASCII canvas - basic ASCII for maximum compatibility:

ASCII Canvas

Facet Grid (2D Faceting)

Facet Grid

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.

About

R package for terminal plots

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages