{"id":41535161,"url":"https://github.com/konbraphat51/animatedwordcloud","last_synced_at":"2026-01-23T23:55:30.212Z","repository":{"id":207398602,"uuid":"719153419","full_name":"konbraphat51/AnimatedWordCloud","owner":"konbraphat51","description":"Animate a timelapse of word cloud","archived":false,"fork":false,"pushed_at":"2024-05-02T06:08:27.000Z","size":1482,"stargazers_count":18,"open_issues_count":4,"forks_count":1,"subscribers_count":1,"default_branch":"dev","last_synced_at":"2025-09-25T07:25:13.490Z","etag":null,"topics":["animation","datascience","natural-language-processing","nlp","video","visualization","wordcloud"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/AnimatedWordCloudTimelapse/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/konbraphat51.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-11-15T15:09:24.000Z","updated_at":"2025-07-05T11:08:00.000Z","dependencies_parsed_at":"2024-01-15T09:06:23.681Z","dependency_job_id":"545b2839-6262-48c6-a5b4-06e68e49d374","html_url":"https://github.com/konbraphat51/AnimatedWordCloud","commit_stats":{"total_commits":675,"total_committers":4,"mean_commits":168.75,"dds":0.2148148148148148,"last_synced_commit":"959bdae053514c5605ff9300a991c849e60f81b2"},"previous_names":["konbraphat51/animatedwordcloud"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/konbraphat51/AnimatedWordCloud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konbraphat51%2FAnimatedWordCloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konbraphat51%2FAnimatedWordCloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konbraphat51%2FAnimatedWordCloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konbraphat51%2FAnimatedWordCloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/konbraphat51","download_url":"https://codeload.github.com/konbraphat51/AnimatedWordCloud/tar.gz/refs/heads/dev","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/konbraphat51%2FAnimatedWordCloud/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28703395,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T23:51:44.727Z","status":"ssl_error","status_checked_at":"2026-01-23T23:51:36.079Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["animation","datascience","natural-language-processing","nlp","video","visualization","wordcloud"],"created_at":"2026-01-23T23:55:26.246Z","updated_at":"2026-01-23T23:55:30.206Z","avatar_url":"https://github.com/konbraphat51.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AnimatedWordCloud ver 1.0.9\n\n\u003ca href=\"https://codeclimate.com/github/konbraphat51/AnimatedWordCloud/maintainability\"\u003e\u003cimg src=\"https://api.codeclimate.com/v1/badges/7a03252f77e7af46dc0f/maintainability\" /\u003e\u003c/a\u003e\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/20a71da0d9d841a2af236f6362a08ae7)](https://app.codacy.com/gh/konbraphat51/AnimatedWordCloud/dashboard?utm_source=gh\u0026utm_medium=referral\u0026utm_content=\u0026utm_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 \u003c= version \u003c= 3.12)\n\n### install\n\n**BE CAREFUL of the name**\n\n❌AnimatedWordCloud  \n✅AnimatedWordCloudTimelapse\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 -\u003e 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. \u003cbr\u003eThis 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\u003cbr\u003eThis 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. \u003cbr\u003e 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.\u003cbr\u003esilent: nothing\u003cbr\u003eminor: bars to know the progress\u003cbr\u003edebug: 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\u003cbr\u003eThere 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.\u003cbr\u003eIf None(default), it will be set to 75% of max_font_size                                                                           |\n| time_stamp_position              | tuple[int, int] | Position of the time stamp.\u003cbr\u003eIf 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\".\u003cbr\u003eIf 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**⭐Give this project a star⭐**  \nThis is our first OSS project, ⭐**star**⭐ would make us very happy⭐⭐⭐\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonbraphat51%2Fanimatedwordcloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkonbraphat51%2Fanimatedwordcloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkonbraphat51%2Fanimatedwordcloud/lists"}