Vizagrams
Integrating diagramming and data visualization
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
Repository
Integrating diagramming and data visualization
Basic Info
- Host: GitHub
- Owner: davibarreira
- License: mit
- Language: Jupyter Notebook
- Default Branch: master
- Homepage: https://davibarreira.github.io/Vizagrams.jl/
- Size: 9.72 MB
Statistics
- Stars: 57
- Watchers: 2
- Forks: 3
- Open Issues: 7
- Releases: 19
Metadata Files
README.md
Vizagrams.jl 
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
- Website: davibarreira.github.io
- Repositories: 143
- Profile: https://github.com/davibarreira
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
Authors
Tags
data visualization visualization grammar diagrammingCitation (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
Top Committers
| Name | 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
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
- Homepage: https://davibarreira.github.io/Vizagrams.jl/
- Documentation: https://docs.juliahub.com/General/Vizagrams/stable/
- License: MIT
-
Latest release: 0.2.15
published 8 months ago
Rankings
Dependencies
- 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
- actions/checkout v4 composite
- julia-actions/setup-julia latest composite
- JuliaRegistries/TagBot v1 composite
