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:

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, "~> 0.2.0" }
]

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:

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:

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 !!!