{"id":17579006,"url":"https://github.com/incognito124/chaosplotter","last_synced_at":"2025-04-28T17:50:02.913Z","repository":{"id":97240731,"uuid":"242843265","full_name":"InCogNiTo124/ChaosPlotter","owner":"InCogNiTo124","description":"Visualization of the chaotic behavior of the logistic map, and other iterated maps, in Python, with GUI in Qt5","archived":false,"fork":false,"pushed_at":"2023-12-15T08:39:43.000Z","size":826,"stargazers_count":14,"open_issues_count":1,"forks_count":3,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-18T19:38:42.832Z","etag":null,"topics":["bifurcation-diagram","chaos","chaos-theory","fft","gui","iterated-maps","kivy","logistic-map","logistic-maps","python","python3","sine-map","tent-map","visualization"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/InCogNiTo124.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-24T21:05:21.000Z","updated_at":"2023-08-28T18:39:39.000Z","dependencies_parsed_at":"2024-10-22T22:01:20.646Z","dependency_job_id":null,"html_url":"https://github.com/InCogNiTo124/ChaosPlotter","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InCogNiTo124%2FChaosPlotter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InCogNiTo124%2FChaosPlotter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InCogNiTo124%2FChaosPlotter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InCogNiTo124%2FChaosPlotter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/InCogNiTo124","download_url":"https://codeload.github.com/InCogNiTo124/ChaosPlotter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251360403,"owners_count":21577268,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["bifurcation-diagram","chaos","chaos-theory","fft","gui","iterated-maps","kivy","logistic-map","logistic-maps","python","python3","sine-map","tent-map","visualization"],"created_at":"2024-10-22T00:25:05.054Z","updated_at":"2025-04-28T17:50:02.854Z","avatar_url":"https://github.com/InCogNiTo124.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# ChaosPlotter\n![](chaosplotter_nochaos_population.png)\n\n![](chaosplotter_chaos_population.png)\n\n![](chaosplotter_nochaos_fft.png)\n\nPlot chaos using Python3/[Qt](https://www.qt.io/)\n## What is it?\nIt's a visualization of iterated maps. A starting population P is selected (by a vertical slider on the far left) and then run through a function (as selected in the upper left). The result is then feeded once again through the same function, over and over again. This is called *MAP ITERATION*. Sequential values are plotted with the red line on the graph in the upper right.\nAn interesting behaviour can be observed if the value of R (big central horizontal slide) is increased. At first, almost every\u003csup\u003e1\u003c/sup\u003e starting population converges to a fixed number. By increasing the R slider even more, our iterated map starts to oscillate between 2 values. If R keeps getting bigger, we see the period 4, than 8, 16... and so on until it gets chaotic and starts to take any value from [0, 1] interval in a seemingly random fashion.\n*AND THEN*, if R keeps increasing, from chaos emerges order. Our wild iterated map settles down to oscillations with period of 3. And then 6. And then 12. And then more chaos\u003csup\u003e2\u003c/sup\u003e, until R hits 4, where our maps starts to diverge.\nIf we plot the values the map converges to as a function of R, we get a [bifurcation diagram](https://en.wikipedia.org/wiki/Bifurcation_diagram) (the big graph at the bottom). \"Bifurcation\" is a fancy word to say \"it splits in two and looks like a fork\".\n\n## How to use it?\n1. Choose a function you wish to iterate. The first one usually gives the best results.\n2. Observe the bifurcation diagram appearing in front of you and be amazed.\n3. Change the R with the big slider in the middle. Observe what happens with the population graph. The vertical line in the diagram shows where the population graph from above fits into the bifurcation diagram. Be more amazed.\n4. Change the starting population:\n\t1. If you're in the \"tame\" zone, observe how the oscillating values don't change much with respect to the starting population.\n\t2. If you're in the \"chaotic\" zone, observe how the small changes in the starting population appear to have a massive effect on the population dynamics. Maybe try to find very different starting populations that have similar dynamics. Both situations exist :) and 0 and 1 don't count \u003e:(\n5. Try a new map and be even more amazed :D\n\n## How to run?\nI've prepared a simple bash script to get you going:\n```bash\ngit clone https://github.com/InCogNiTo124/ChaosPlotter.git \u0026\u0026 cd ChaosPlotter\nbash setup.sh\n```\nThis script will build a virtual environment called `venv` and install and initialize all of the dependencies in it. An obvious prerequisite is [`virtualenv`](https://virtualenv.pypa.io/). Another obvious prerequisite is `python3`.\nIf you dislike environments or wish to install dependencies globally, just call `setup.sh --no-venv`. **This is strongly discouraged**.\n\nAfter setting this repository up, simply run:\n```bash\nsource venv/bin/activate\npython chaosplotter.py\n```\nand enjoy :)\n\n- \u003csup\u003e1\u003c/sup\u003e This is true for all values in [0, 1], except 0 and 1 (so technically \u003c0, 1\u003e), and maybe some points inside that interval\n- \u003csup\u003e2\u003c/sup\u003e Actually, you can find periods of any length: 5, 13, 120497... You name the natural number, the corresponding period is in there somewhere\n## Wish to contribute?\nYou are very welcome. Just open an issue or push a PR.\n\n### TODO:\n- [x] Integration with numpy and matplotlib\n- [x] Using fast Qt gui framework\n- [ ] Switch to `pyqtgraph`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fincognito124%2Fchaosplotter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fincognito124%2Fchaosplotter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fincognito124%2Fchaosplotter/lists"}