Description
A better way to build animated Matplotlib gifs. Just: pip install gif
gif alternatives and similar packages
Based on the "Data Visualization" category.
Alternatively, view gif alternatives based on common mentions on social networks and blogs.
-
Apache Superset
Apache Superset (incubating) is a modern, enterprise-ready business intelligence web application -
redash
Connect to any data source, easily visualize, dashboard and share your data. -
folium
Manipulate your data in Python, then visualize it in a Leaflet map via folium. -
PyQtGraph
Interactive and realtime 2D/3D/Image plotting and science/engineering widgets. -
Flask JSONDash
Build javascript chart dashboards without any front-end code. Uses any json endpoint. JSON config only. Ready to go. -
SnakeViz
A browser based graphical viewer for the output of Python's cProfile module. -
GooPyCharts
A Google Charts API for Python, meant to be used as an alternative to matplotlib.
Scout APM - Leading-edge performance monitoring starting at $39/month
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest. Visit our partner's website for more details.
Do you think we are missing an alternative of gif or a related project?
Popular Comparisons
README
About
The extension for Altair, matplotlib, and Plotly animations.
Installation
gif is installed at the command line:
pip install -U gif
Depending on which flavour of gif you plan to use you'll likely need some additional dependencies:
pip install "gif[altair]"
pip install "gif[matplotlib]"
pip install "gif[plotly]"
Note: gif[altair] uses Selenium, which requires a properly configured chromedriver or geckodriver.
Usage (Altair)
Imports and data:
import random
import altair as alt
import pandas as pd
import gif
df = pd.DataFrame({
't': list(range(10)) * 10,
'x': [random.randint(0, 100) for _ in range(100)],
'y': [random.randint(0, 100) for _ in range(100)]
})
Decorate a plot function with gif.frame
and return an Altair object:
@gif.frame
def plot(i):
d = df[df['t'] == i]
chart = alt.Chart(d).encode(
x=alt.X('x', scale=alt.Scale(domain=(0, 100))),
y=alt.Y('y', scale=alt.Scale(domain=(0, 100)))
).mark_circle()
return chart
Build a bunch of "frames" with a standard for
loop:
frames = []
for i in range(10):
frame = plot(i)
frames.append(frame)
Specify the duration between each frame and save:
gif.save(frames, 'example.gif', duration=100, unit="ms", between="frames")
Usage (matplotlib)
Imports and data:
import random
from matplotlib import pyplot as plt
import gif
x = [random.randint(0, 100) for _ in range(100)]
y = [random.randint(0, 100) for _ in range(100)]
(Optional) Set the dots per inch resolution to 300:
gif.options.matplotlib["dpi"] = 300
Decorate a plot function with gif.frame
(and don't return anything):
@gif.frame
def plot(i):
xi = x[i*10:(i+1)*10]
yi = y[i*10:(i+1)*10]
plt.scatter(xi, yi)
plt.xlim((0, 100))
plt.ylim((0, 100))
Build a bunch of "frames" with a standard for
loop:
frames = []
for i in range(10):
frame = plot(i)
frames.append(frame)
Specify the duration of the entire gif:
gif.save(frames, 'example.gif', duration=3.5, unit="s", between="startend")
Usage (Plotly)
Imports and data:
import random
import plotly.graph_objects as go
import pandas as pd
import gif
df = pd.DataFrame({
't': list(range(10)) * 10,
'x': [random.randint(0, 100) for _ in range(100)],
'y': [random.randint(0, 100) for _ in range(100)]
})
Decorate a plot function with gif.frame
and return a Plotly figure:
@gif.frame
def plot(i):
d = df[df['t'] == i]
fig = go.Figure()
fig.add_trace(go.Scatter(
x=d["x"],
y=d["y"],
mode="markers"
))
fig.update_layout(width=500, height=300)
return fig
Build a bunch of "frames" with a standard for
loop:
frames = []
for i in range(10):
frame = plot(i)
frames.append(frame)
Specify the duration (milliseconds) between each frame and save:
gif.save(frames, 'example.gif', duration=100)
Gallery (Altair)
Click on any image to see the source code
![]() |
![]() |
![]() |
---|---|---|
![]() |
![]() |
Gallery (matplotlib)
Click on any image to see the source code
![]() |
![]() |
![]() |
---|---|---|
![]() |
![]() |
![]() |
Gallery (Plotly)
Click on any image to see the source code
![]() |
![]() |
![]() |
---|
If you have a dope ass animation that you think should be in the Gallery, submit a PR!
*Note that all licence references and agreements mentioned in the gif README section above
are relevant to that project's source code only.