Skip to content

Elixir library to generate SVG Graphs and Plots for visualization

Notifications You must be signed in to change notification settings

BigThinkcode/matplotex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Matplotex

Matplotex is a lightweight and efficient library for Elixir projects that facilitates server-side SVG generation for data visualization. Designed to integrate seamlessly with Phoenix LiveView, it serves as a powerful tool for creating dynamic visualizations in web applications. Below are the key benefits and extended use cases of Matplotex:

  • Server-side SVG Generation: Matplotex enables the creation of larger, complex plots on the server, ensuring smooth performance on client-side devices with limited memory.
  • Efficient Concurrent Processing : Leveraging Elixir’s concurrency capabilities, Matplotex can handle multiple requests simultaneously, making it ideal for high-performance applications.
  • Cross-Project Compatibility : While optimized for Elixir, Matplotex can also be used by non-Elixir projects through its API integration with the Phoenix framework, broadening its potential use cases.

The sample plots generated using Matplotex are shown below.

Installation

The package can be installed by adding Matplotex to your list of dependencies in mix.exs.

def deps do
[
    {:matplotex, git: "git@github.com:BigThinkcode/matplotex.git" }
]

Sample SVG generation

x = [1, 3, 7, 4, 2, 5, 6]
y = [1, 3, 7, 4, 2, 5, 6]

frame_width = 8
frame_height = 6
size = {frame_width, frame_height}
margin = 0.05
font_size = "16pt"
title_font_size = "18pt"
ticks = [1, 2, 3, 4, 5, 6, 7]

x
|> Matplotex.plot(y)
|> Matplotex.figure(%{figsize: size, margin: margin})
|> Matplotex.set_title("The Plot Title")
|> Matplotex.set_xlabel("X Axis")
|> Matplotex.set_ylabel("Y Axis")
|> Matplotex.set_xticks(ticks)
|> Matplotex.set_yticks(ticks)
|> Matplotex.set_rc_params(
  x_tick_font_size: font_size,
  y_tick_font_size: font_size,
  title_font_size: title_font_size,
  x_label_font_size: font_size,
  y_label_font_size: font_size,
  title_font_size: title_font_size
)
|> Matplotex.show()

Roadmap: What's Coming Next

We are actively working on the following improvements and additions for the Matplotex library:

Upcoming Features for Matplotex:

  • Compatibility with Elixir Phoenix LiveView : Seamless integration with Phoenix LiveView for real-time data visualization in web applications.
  • GUI Integration : Adding graphical user interface (GUI) capabilities to Matplotex, providing an intuitive and user-friendly experience for generating plots.
  • Support for the Nerves Framework : Enabling real-time data visualization for embedded systems, such as sensor readings, using the Nerves framework.

Additionally, we are focused on expanding the library with a variety of new chart types to enhance its functionality and versatility. The upcoming Matplotex version will also include the official Hex package, featuring all the basic chart types!!!

Contribution

We welcome all contributions to improve the Matplotex project! Here are some key ways you can contribute:

  • Propose Features : Suggest new functionalities or improvements, including new plot additions.
  • Report Bugs : Identify and report issues in the library
  • Review Pull Requests : Review open contributions and share constructive feedback
  • Fix Bugs : Help resolve reported issues to improve the library

Steps to Contribute

  1. Fork the repository.
  2. Create a new branch.
    git checkout -b feature-name
  1. Make your changes.
  2. Add your changes to the branch.
    git add <changed files>
  1. Commit your changes.
    git commit -m 'Add new feature' 
  1. Push to the branch.
    git push origin feature-name 
  1. Open a Pull Request.

Happy Contributing !!!

About

Elixir library to generate SVG Graphs and Plots for visualization

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages