AnimatedWordCloud animates the timelapse of your words vector.
Using Elon Musk's tweets.
(C) Elon Musk
Python (3.8 <= version <= 3.12)
BE CAREFUL of the name
❌AnimatedWordCloud
✅AnimatedWordCloudTimelapse
pip install AnimatedWordCloudTimelapse
See Example Notebook for details
from AnimatedWordCloud import animate
# data must be list[("time name", dict[str, float])]
timelapse_wordvector = [
(
"time_0", #time stamp
{
"hanshin":0.334, #word -> weight
"chiba":0.226
}
),
(
"time_1",
{
"hanshin":0.874,
"fujinami":0.609
}
),
(
"time_2",
{
"fujinami":0.9,
"major":0.4
}
)
]
# animate!
# the animation gif path is in this variable!
path = animate(timelapse_wordvector)
from AnimatedWordCloud import animate, Config
config = Config(
what_you_want_to_edit = editing_value
)
timelapse = # adding time lapse data
#give the config to second parameter
animate(timelapse, config)
All has default value, so just edit what you need
parameter name | type | meaning |
---|---|---|
font_path | str | Path to the font file. |
output_path | str | Parh of the output directory |
max_words | int | max number of the words in the screen |
max_font_size | int | Maximum font size of the word |
min_font_size | int | Minimum font size of the word |
image_width | int | Width of the image |
image_height | int | Height of the image |
background_color | str | Background color. This is based on Pillow.Image.new() |
color_map | str | color map used for coloring words This is based on matplotlib colormap |
allocation_strategy | str(literal) | allocation algorithm method. This will change the allocation of the words in the output. There is "magnetic" now. |
image_division | int | precision of allocation calculation. Higher the preciser, but calculation slower |
movement_reluctance | float | Reluctance of the movement of the word. If higher, the word tends to stay near to the previous position. |
verbosity | str(literal) | logging. silent: nothing minor: bars to know the progress debug: all progress. noisy |
transition_symbol | str | written in the image |
starting_time_stamp | str | time stamp of the first frame (before the first time stamp in the input timelapse data) |
duration_per_interpolation_frame | int | milliseconds per interpolation frame |
duration_per_static_frame | int | milliseconds per staic (frame correspond to timestamp of wordvector) frame |
n_frames_for_interpolation | int | how many frames will be generated for interpolation between each frames |
interpolation_method | str(literal) | The method of making movement There is "linear" now |
drawing_time_stamp | bool | Whether to draw time stamp on the image |
time_stamp_color | str | Color of the time stamp. This is based on Pillow ImageColor |
time_stamp_font_size | int | Font size of the time stamp. If None(default), it will be set to 75% of max_font_size |
time_stamp_position | tuple[int, int] | Position of the time stamp. If None(default), it will be set to (image_width0.75, image_height0.75) which is right bottom. |
intermediate_frames_id | str | Static images of each frame of itermediate product will be saved as "{intermediateframes_id}{frame_number}.png". If None(default), this will be set randomly. |
Look at CONTRIBUTING.md first.
-
Konbraphat51: Head Author
-
SuperHotDogCat: Author
⭐Give this project a star⭐
This is our first OSS project, ⭐star⭐ would make us very happy⭐⭐⭐