Vizagrams

Integrating diagramming and data visualization

https://github.com/davibarreira/vizagrams.jl

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 2 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.5%) to scientific vocabulary

Keywords from Contributors

numeric ida hybrid-differential-equations matrix-exponential probability-distribution neural-sde finite-volume pinn interactive pde
Last synced: 6 months ago · JSON representation ·

Repository

Integrating diagramming and data visualization

Basic Info
Statistics
  • Stars: 57
  • Watchers: 2
  • Forks: 3
  • Open Issues: 7
  • Releases: 19
Created over 1 year ago · Last pushed 6 months ago
Metadata Files
Readme License Citation

README.md

Vizagrams.jl

Dev Build Status codecov Code Style: Blue Aqua Jet DOI

Vizagrams is a visualization framework that integrates diagramming and data visualization, with the goal of providing high expressiveness with intuitive usability.

The framework implements a diagramming DSL together with a visualization grammar, thus allowing users to create diagrams by combining and transforming plots, as well as to create new visualization specifications using diagram construction operations.


:pagewithcurl: Why another visualization package?

The moto for Vizagrams is "high expressiveness with intuitive usability." In other words, the goal is for users to be able to produce (complex) visualizations without having to become power-users or resorting to ad-hoc methods, where the complexity is hidden by several lines of code. To achieve this, Vizagrams uses a novel approach to data visualization construction, which integrates graphic specification and diagramming.

The framework implements a diagramming DSL, and builds a visualization grammar on top of it. The idea of constructing data visualization tools on top of diagramming frameworks is not new[^1]. What makes Vizagrams distinct is how it uses the concepts of graphical marks and graphic expressions[^2] to blur the distinction between data visualization and diagramming. This allows users to produce plots and manipulate them using diagramming operations such as composition, translation, rotation, style transformations, and so on.

One of the core assumptions of Vizagrams is that once users understand the basics of the framework, the task of creating new visualizations becomes similar to diagramming, hence the "intuitive usability." In terms of "expressiveness," we let the gallery of examples speak for itself.

Package Features

Here is a summary of the features provided by Vizagrams:

  • Diagramming DSL inspired by the Haskell library Diagrams;
  • Visualization grammar with syntax similar to Vega-Lite;
  • Ability to define custom graphical marks;
  • Use graphic expressions to create new data visualization specifications;
  • Manipulate and combine plots using diagramming operations;

Quickstart

Let us do some simple examples to illustrate how to use Vizagrams. We start with a simple diagram: ```julia using Vizagrams

d = Circle() + T(2,0)*Square() draw(d) ```

Note that + represents composition, and T(2,0) is translation. Besides translations, we have rotation (R(ang)), uniform scaling (U(x)), mirror reflection (M(ang)), and stylistic transformations (S(...)). Let us increment our previous diagram:

julia d = S(:fill=>:white,:stroke=>:black)*Circle(r=2) + d draw(d)

For plotting, we use the visualization grammar syntax. If you have used VegaLite.jl, this might look familiar:

```julia using DataFrames using VegaDatasets df = DataFrame(dataset("cars")); df = dropmissing(df);

plt = Plot( data=df, encodings=( x=(field=:Horsepower,), y=(field=:MilesperGallon,), color=(field=:Origin,) ), graphic=Circle(r=5) ) draw(plt) ```

We can use our diagram d as a mark for a new plot: ```julia newplt = Plot( data=df, encodings=( x=(field=:Horsepower,), y=(field=:Milesper_Gallon,), color=(field=:Origin,), size=(field=:Acceleration,), ), graphic = Mark(d) )

draw(new_plt) ```

We can manipulate our plots and add new diagram elements in order to produce new visualizations: ```julia viztitle = TextMark(text="Creating a New Viz",anchor=:c,fontsize=20) vizframe = S(:fillOpacity=>0,:stroke=>:black)T(400,100)*Rectangle(h=370,w=1000)

newviz = newplt + T(470,0)plt + vizframe + T(400,250)*viztitle

draw(new_viz) ```

Check the documentation for a more thorough exposition.

Installation

To install Vizgrams.jl, run the following command in the Julia REPL: julia julia>] pkg> add Vizagrams

Related Packages in the Julia Ecosystem

  • Compose.jl - A vector graphics library for Julia, that can be used for diagram drawing. Similar to Vizagrams, it is also inspired by the Haskell library Diagrams.
  • Gadfly.jl - A data visualization package based largely on Hadley Wickhams's ggplot2. It has been developed for many years, thus, it is a good choice for those who want a robust data visualization package with a visualization grammar implementation.
  • Luxor.jl - Package for drawing simple static 2D vector graphics. The focus of Luxor is on simplicity and ease of use.
  • Thebes.jl - A little extension package for the package Luxor.jl that provides some rudimentary 3D (2.5D?) wireframe functionality.
  • Javis.jl - A tool focused on providing an easy to use interface for making animations and developing visualizations quickly.
  • Makie.jl - Implements an interactive plotting ecosystem. Similar to Python's Matplotlib, it does not implement a visualization grammar, instead, users can pick from a collection of charts and arrange them using layouts and other customization options.
  • AlgebraOfGraphics.jl - Defines an algebra of graphics where plot specifications are constructed by combining layers using + and * operations. Visualizations are powered by Makie.
  • Plots.jl - A visualization interface and toolset. It does not implement a visualization grammar, instead relying on the concept of plot attributes as the building block of plot specifications.
  • VegaLite.jl - Plotting package based on Vega-Lite, which is a high-level grammar of interactive graphics.

[^1]: For example, Gadfly.jl is built on top of Compose.jl and the R pacakge ggplot2 is built on top of grid. [^2]: Check the documentation for an explanation on graphical marks and graphic expressions.

Owner

  • Name: Davi Sales Barreira
  • Login: davibarreira
  • Kind: user
  • Location: Fortaleza
  • Company: Doutorando em Matemática Aplicada

Phd student at FGV - Rio de Janeiro, Studying applied math . Interested mostly in Math and Julia programming. Data Scientist at Resolvvi

JOSS Publication

Vizagrams.jl: A Julia-based visualization framework that integrates diagramming and data visualization
Published
October 15, 2025
Volume 10, Issue 114, Page 9037
Authors
Davi Sales Barreira ORCID
Fundação Getúlio Vargas - School of Applied Mathematics, Brazil
Asla Medeiros e Sá ORCID
IMPA Tech, Brazil
Flávio Codeço Coelho ORCID
Fundação Getúlio Vargas - School of Applied Mathematics, Brazil
Editor
Mehmet Hakan Satman ORCID
Tags
data visualization visualization grammar diagramming

Citation (CITATION.bib)

@misc{Vizagrams.jl,
    author = {Davi Sales Barreira, Asla Medeiros e Sá, Flávio Codeço Coelho},
    title = {Vizagrams.jl},
    url = {https://github.com/davibarreira/Vizagrams.jl},
    version = {v0.1.0},
    year = {2024},
    month = {7},
}

GitHub Events

Total
  • Create event: 44
  • Release event: 5
  • Issues event: 14
  • Watch event: 12
  • Delete event: 6
  • Issue comment event: 72
  • Push event: 48
  • Pull request review event: 3
  • Pull request event: 32
  • Fork event: 2
Last Year
  • Create event: 44
  • Release event: 5
  • Issues event: 14
  • Watch event: 12
  • Delete event: 6
  • Issue comment event: 72
  • Push event: 48
  • Pull request review event: 3
  • Pull request event: 32
  • Fork event: 2

Committers

Last synced: about 1 year ago

All Time
  • Total Commits: 195
  • Total Committers: 4
  • Avg Commits per committer: 48.75
  • Development Distribution Score (DDS): 0.031
Past Year
  • Commits: 195
  • Committers: 4
  • Avg Commits per committer: 48.75
  • Development Distribution Score (DDS): 0.031
Top Committers
Name Email Commits
Davi Sales Barreira d****a@g****m 189
jverzani j****i@g****m 2
dependabot[bot] 4****] 2
CompatHelper Julia c****y@j****g 2
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 30
  • Total pull requests: 58
  • Average time to close issues: 20 days
  • Average time to close pull requests: 3 days
  • Total issue authors: 10
  • Total pull request authors: 4
  • Average comments per issue: 4.07
  • Average comments per pull request: 0.88
  • Merged pull requests: 44
  • Bot issues: 0
  • Bot pull requests: 16
Past Year
  • Issues: 19
  • Pull requests: 34
  • Average time to close issues: 14 days
  • Average time to close pull requests: 5 days
  • Issue authors: 6
  • Pull request authors: 3
  • Average comments per issue: 4.16
  • Average comments per pull request: 0.74
  • Merged pull requests: 24
  • Bot issues: 0
  • Bot pull requests: 13
Top Authors
Issue Authors
  • davibarreira (21)
  • rcqls (2)
  • jariji (2)
  • exaexa (2)
  • jverzani (1)
  • Jigyasu4indp (1)
  • cormullion (1)
  • non-Jedi (1)
  • JuliaTagBot (1)
  • josephsmann (1)
  • VarLad (1)
Pull Request Authors
  • davibarreira (66)
  • dependabot[bot] (20)
  • exaexa (5)
  • jverzani (2)
Top Labels
Issue Labels
Pull Request Labels
dependencies (20) github_actions (6)

Packages

  • Total packages: 1
  • Total downloads:
    • julia 3 total
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 19
juliahub.com: Vizagrams

Integrating diagramming and data visualization

  • Versions: 19
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 3 Total
Rankings
Downloads: 3.2%
Dependent repos count: 3.2%
Average: 7.6%
Dependent packages count: 16.3%
Last synced: 6 months ago

Dependencies

.github/workflows/CI.yml actions
  • actions/checkout v4 composite
  • codecov/codecov-action v4.5.0 composite
  • julia-actions/cache v2 composite
  • julia-actions/julia-buildpkg v1 composite
  • julia-actions/julia-processcoverage v1 composite
  • julia-actions/julia-runtest v1 composite
  • julia-actions/setup-julia v2 composite
.github/workflows/CompatHelper.yml actions
.github/workflows/Documentation.yml actions
  • actions/checkout v4 composite
  • julia-actions/setup-julia latest composite
.github/workflows/TagBot.yml actions
  • JuliaRegistries/TagBot v1 composite