# AnimatedWordCloud ver 1.0.9
<a href="https://codeclimate.com/github/konbraphat51/AnimatedWordCloud/maintainability"><img src="https://api.codeclimate.com/v1/badges/7a03252f77e7af46dc0f/maintainability" /></a>
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/20a71da0d9d841a2af236f6362a08ae7)](https://app.codacy.com/gh/konbraphat51/AnimatedWordCloud/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
[![unit-test](https://github.com/konbraphat51/AnimatedWordCloud/actions/workflows/python-tester.yml/badge.svg?branch=main)](https://github.com/konbraphat51/AnimatedWordCloud/actions/workflows/python-tester.yml)[![codecov](https://codecov.io/gh/konbraphat51/AnimatedWordCloud/graph/badge.svg?token=4OOX0GSJDJ)](https://codecov.io/gh/konbraphat51/AnimatedWordCloud)
AnimatedWordCloud animates the timelapse of your words vector.
## Examples!
Using [Elon Musk's tweets](https://data.world/adamhelsinger/elon-musk-tweets-until-4-6-17).
(C) Elon Musk
![output_elon](https://github.com/konbraphat51/AnimatedWordCloud/assets/101827492/89052c20-b228-42d8-921e-ebae9f7e30a0)
[Procedure Notebook](https://github.com/konbraphat51/AnimatedWordCloudExampleElon)
## How to use?
### Requirements
Python (3.8 <= version <= 3.12)
### install
**BE CAREFUL of the name**
❌AnimatedWordCloud
✅AnimatedWordCloudTimelapse
```
pip install AnimatedWordCloudTimelapse
```
### coding
See [Example Notebook](https://github.com/konbraphat51/AnimatedWordCloudExampleElon) for details
#### Using default configuration
```python
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)
```
#### Editing configuration
```python
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)
```
##### Parameters of `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. <br>This is based on [Pillow.Image.new()](https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.new) |
| color_map | str | color map used for coloring words<br>This is based on [matplotlib colormap](https://matplotlib.org/stable/users/explain/colors/colormaps.html) |
| allocation_strategy | str(literal) | allocation algorithm method. This will change the allocation of the words in the output. <br> 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.<br>silent: nothing<br>minor: bars to know the progress<br>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<br>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`](https://pillow.readthedocs.io/en/stable/reference/ImageColor.html#color-names) |
| time_stamp_font_size | int | Font size of the time stamp.<br>If None(default), it will be set to 75% of max_font_size |
| time_stamp_position | tuple[int, int] | Position of the time stamp.<br>If None(default), it will be set to (image_width*0.75, image_height*0.75) which is right bottom. |
| intermediate_frames_id | str | Static images of each frame of itermediate product will be saved as "{intermediate*frames_id}*{frame_number}.png".<br>If None(default), this will be set randomly. |
## Want to contribute?
Look at [CONTRIBUTING.md](CONTRIBUTING.md) first.
### Maintainers
- [Konbraphat51](https://github.com/konbraphat51): Head Author
[![Konbraphat51 icon](https://github.com/konbraphat51.png)](https://github.com/konbraphat51)
- [SuperHotDogCat](https://github.com/SuperHotDogCat): Author
[![SuperHotDogCat](https://github.com/SuperHotDogCat.png)](https://github.com/SuperHotDogCat)
## Want to support?
**⭐Give this project a star⭐**
This is our first OSS project, ⭐**star**⭐ would make us very happy⭐⭐⭐
Raw data
{
"_id": null,
"home_page": "https://github.com/konbraphat51/AnimatedWordCloud/tree/main",
"name": "AnimatedWordCloudTimelapse",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "NLP, World Cloud, Animation, Natural Language Processing, video, Visualization, Data Science",
"author": "konbraphat51, superhotdogcat",
"author_email": "konbraphat51@gmail.com, siromisochan@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/6e/cc/6e3305a0d95256697cf355660716ef60c156aa7a932c1f53125dd7a91e4e/animatedwordcloudtimelapse-1.0.9.tar.gz",
"platform": null,
"description": "# AnimatedWordCloud ver 1.0.9\n\n<a href=\"https://codeclimate.com/github/konbraphat51/AnimatedWordCloud/maintainability\"><img src=\"https://api.codeclimate.com/v1/badges/7a03252f77e7af46dc0f/maintainability\" /></a>\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/20a71da0d9d841a2af236f6362a08ae7)](https://app.codacy.com/gh/konbraphat51/AnimatedWordCloud/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)\n[![unit-test](https://github.com/konbraphat51/AnimatedWordCloud/actions/workflows/python-tester.yml/badge.svg?branch=main)](https://github.com/konbraphat51/AnimatedWordCloud/actions/workflows/python-tester.yml)[![codecov](https://codecov.io/gh/konbraphat51/AnimatedWordCloud/graph/badge.svg?token=4OOX0GSJDJ)](https://codecov.io/gh/konbraphat51/AnimatedWordCloud)\n\nAnimatedWordCloud animates the timelapse of your words vector.\n\n## Examples!\n\nUsing [Elon Musk's tweets](https://data.world/adamhelsinger/elon-musk-tweets-until-4-6-17). \n(C) Elon Musk\n\n![output_elon](https://github.com/konbraphat51/AnimatedWordCloud/assets/101827492/89052c20-b228-42d8-921e-ebae9f7e30a0)\n\n[Procedure Notebook](https://github.com/konbraphat51/AnimatedWordCloudExampleElon)\n\n## How to use?\n\n### Requirements\n\nPython (3.8 <= version <= 3.12)\n\n### install\n\n**BE CAREFUL of the name**\n\n\u274cAnimatedWordCloud \n\u2705AnimatedWordCloudTimelapse\n\n```\npip install AnimatedWordCloudTimelapse\n```\n\n### coding\n\nSee [Example Notebook](https://github.com/konbraphat51/AnimatedWordCloudExampleElon) for details\n\n#### Using default configuration\n\n```python\nfrom AnimatedWordCloud import animate\n\n# data must be list[(\"time name\", dict[str, float])]\ntimelapse_wordvector = [\n (\n \"time_0\", #time stamp\n {\n \"hanshin\":0.334, #word -> weight\n \"chiba\":0.226\n }\n ),\n (\n \"time_1\",\n {\n \"hanshin\":0.874,\n \"fujinami\":0.609\n }\n ),\n (\n \"time_2\",\n {\n \"fujinami\":0.9,\n \"major\":0.4\n }\n )\n]\n\n# animate!\n# the animation gif path is in this variable!\npath = animate(timelapse_wordvector)\n```\n\n#### Editing configuration\n\n```python\nfrom AnimatedWordCloud import animate, Config\n\nconfig = Config(\n what_you_want_to_edit = editing_value\n)\n\ntimelapse = # adding time lapse data\n\n#give the config to second parameter\nanimate(timelapse, config)\n```\n\n##### Parameters of `Config`\n\nAll has default value, so just edit what you need\n\n| parameter name | type | meaning |\n| -------------------------------- | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| font_path | str | Path to the font file. |\n| output_path | str | Parh of the output directory |\n| max_words | int | max number of the words in the screen |\n| max_font_size | int | Maximum font size of the word |\n| min_font_size | int | Minimum font size of the word |\n| image_width | int | Width of the image |\n| image_height | int | Height of the image |\n| background_color | str | Background color. <br>This is based on [Pillow.Image.new()](https://pillow.readthedocs.io/en/stable/reference/Image.html#PIL.Image.new) |\n| color_map | str | color map used for coloring words<br>This is based on [matplotlib colormap](https://matplotlib.org/stable/users/explain/colors/colormaps.html) |\n| allocation_strategy | str(literal) | allocation algorithm method. This will change the allocation of the words in the output. <br> There is \"magnetic\" now. |\n| image_division | int | precision of allocation calculation. Higher the preciser, but calculation slower |\n| movement_reluctance | float | Reluctance of the movement of the word. If higher, the word tends to stay near to the previous position. |\n| verbosity | str(literal) | logging.<br>silent: nothing<br>minor: bars to know the progress<br>debug: all progress. noisy |\n| transition_symbol | str | written in the image |\n| starting_time_stamp | str | time stamp of the first frame (before the first time stamp in the input timelapse data) |\n| duration_per_interpolation_frame | int | milliseconds per interpolation frame |\n| duration_per_static_frame | int | milliseconds per staic (frame correspond to timestamp of wordvector) frame |\n| n_frames_for_interpolation | int | how many frames will be generated for interpolation between each frames |\n| interpolation_method | str(literal) | The method of making movement<br>There is \"linear\" now |\n| drawing_time_stamp | bool | Whether to draw time stamp on the image |\n| time_stamp_color | str | Color of the time stamp. This is based on [`Pillow ImageColor`](https://pillow.readthedocs.io/en/stable/reference/ImageColor.html#color-names) |\n| time_stamp_font_size | int | Font size of the time stamp.<br>If None(default), it will be set to 75% of max_font_size |\n| time_stamp_position | tuple[int, int] | Position of the time stamp.<br>If None(default), it will be set to (image_width*0.75, image_height*0.75) which is right bottom. |\n| intermediate_frames_id | str | Static images of each frame of itermediate product will be saved as \"{intermediate*frames_id}*{frame_number}.png\".<br>If None(default), this will be set randomly. |\n\n## Want to contribute?\n\nLook at [CONTRIBUTING.md](CONTRIBUTING.md) first.\n\n### Maintainers\n\n- [Konbraphat51](https://github.com/konbraphat51): Head Author \n [![Konbraphat51 icon](https://github.com/konbraphat51.png)](https://github.com/konbraphat51)\n\n- [SuperHotDogCat](https://github.com/SuperHotDogCat): Author \n [![SuperHotDogCat](https://github.com/SuperHotDogCat.png)](https://github.com/SuperHotDogCat)\n\n## Want to support?\n\n**\u2b50Give this project a star\u2b50** \nThis is our first OSS project, \u2b50**star**\u2b50 would make us very happy\u2b50\u2b50\u2b50\n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "Animate a timelapse of word cloud",
"version": "1.0.9",
"project_urls": {
"GitHub Repository": "https://github.com/konbraphat51/AnimatedWordCloud",
"Homepage": "https://github.com/konbraphat51/AnimatedWordCloud/tree/main"
},
"split_keywords": [
"nlp",
" world cloud",
" animation",
" natural language processing",
" video",
" visualization",
" data science"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b3f687b679fec5d1073f60e0c4dc150e86d1d0d489e24301869ae6f0075f8699",
"md5": "ceae6737d0970e96fca31fe781759655",
"sha256": "f97b62a74f2216919b217da8af067aa5bf0d38e25ac9c6593682ac99e5761875"
},
"downloads": -1,
"filename": "AnimatedWordCloudTimelapse-1.0.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ceae6737d0970e96fca31fe781759655",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 1026430,
"upload_time": "2024-05-02T06:08:51",
"upload_time_iso_8601": "2024-05-02T06:08:51.549218Z",
"url": "https://files.pythonhosted.org/packages/b3/f6/87b679fec5d1073f60e0c4dc150e86d1d0d489e24301869ae6f0075f8699/AnimatedWordCloudTimelapse-1.0.9-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "6ecc6e3305a0d95256697cf355660716ef60c156aa7a932c1f53125dd7a91e4e",
"md5": "ca2f692de3d577114c2e7ae6714665c2",
"sha256": "3fb785573d7a78952894a4d9b4fdbe42aaa86c8e73288c8d83bf3145375c14aa"
},
"downloads": -1,
"filename": "animatedwordcloudtimelapse-1.0.9.tar.gz",
"has_sig": false,
"md5_digest": "ca2f692de3d577114c2e7ae6714665c2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 1015668,
"upload_time": "2024-05-02T06:08:54",
"upload_time_iso_8601": "2024-05-02T06:08:54.042189Z",
"url": "https://files.pythonhosted.org/packages/6e/cc/6e3305a0d95256697cf355660716ef60c156aa7a932c1f53125dd7a91e4e/animatedwordcloudtimelapse-1.0.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-05-02 06:08:54",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "konbraphat51",
"github_project": "AnimatedWordCloud",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "animatedwordcloudtimelapse"
}