Charted is a zero dependency SVG chart generator that aims to provide a simple interface for generating beautiful and customisable graphs. This project is inspired by chart libraries like mermaid.js
.
The following chart types are available:
The following chart types are planned to be implemented.
Installation
pip install charted
tkinter
I've tried to avoid using tkinter
in this library as it can be fiddly to install depending on your OS. However, it's still partially used if you're looking to expand Charted. Instead of using tkinter
to calculate text dimensions on the fly, font definitions are created in fonts/definitions/
.
New font definitions can be created by using:
poetry run python charted/fonts/creator.py Helvetica
Links
Examples
Column
from charted.charts import Column
graph = ColumnChart(
title="Example Column Graph",
data=[
[9.8, -29.8, 22.6, 45.0, 33.8, 35.4, 44.2],
[8.9, 33.1, -27.1, 31.2, -15.4, 32.6, 19.8],
[-32.0, 32.3, 45.7, -3.3, -33.3, -15.7, -38.6],
],
labels=["January", "February", "March", "April", "May", "June", "July"],
width=600,
height=400,
theme={
"padding": {
"v_padding": 0.1,
"h_padding": 0.1,
}
},
)
Labelled Line Chart
from charted.charts import LineChart
graph = LineChart(
title="Example Labelled Line Graph",
data=[5 * (1.5**n) for n in range(0, 11)],
labels=["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"],
theme={
"colors": ["#204C9E"],
},
)
Dual Axis Line Chart
from charted.charts import LineChart
graph = LineChart(
title="Example XY Line Graph",
data=[
[5 * (1.5**n) for n in range(0, 11)],
[-5 * (1.5**n) for n in range(0, 11)],
],
x_data=[-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4],
width=600,
height=400,
)
Scatter
from charted.charts import ScatterChart
graph = ScatterChart(
title="Example Scatter Graph",
y_data=[
[random.random() * i for i in range(-25, 25, 1)],
[random.random() * i for i in range(-25, 25, 1)],
],
x_data=[
[random.random() * i for i in range(-25, 25, 1)],
[random.random() * i for i in range(-25, 25, 1)],
],
)