<img src="assets/images/matplotex_logo.png" height="50" /> Matplotex
[**Matplotex**](https://hexdocs.pm/matplotex/Matplotex.html)- Server-side SVG Generation: <font color="darkblue"> Matplotex</font> 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, <font color="darkblue"> Matplotex</font> can handle multiple requests simultaneously, making it ideal for high-performance applications.
- Cross-Project Compatibility : While optimized for Elixir, <font color="darkblue"> Matplotex</font> 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 <font color="darkblue"> Matplotex</font> are shown below.
Installation
The package can be installed by adding <font color="darkblue"> Matplotex</font> to your list of dependencies in mix.exs.
def deps do
[
{:matplotex, "~> 0.4.71" }
]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 <font color="darkblue"> Matplotex</font> 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 <font color="darkblue"> Matplotex</font>, 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 <font color="darkblue"> Matplotex</font> version will also include the official Hex package, featuring all the basic chart types!!!
Contribution
We welcome all contributions to improve the <font color="darkblue"> Matplotex</font> 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
- Fork the repository.
-
Create a new branch.
git checkout -b feature-name - Make your changes.
-
Add your changes to the branch.
git add <changed files> -
Commit your changes.
git commit -m 'Add new feature' -
Push to the branch.
git push origin feature-name - Open a Pull Request.