{"id":18788082,"url":"https://github.com/onc/bluenoiseplots","last_synced_at":"2025-07-18T23:08:07.584Z","repository":{"id":59155018,"uuid":"329053048","full_name":"onc/BlueNoisePlots","owner":"onc","description":"Python implementation of Blue Noise Plots, a novel replacement for jitter plots, published at Eurographics 2021.","archived":false,"fork":false,"pushed_at":"2023-05-01T07:03:04.000Z","size":720,"stargazers_count":3,"open_issues_count":10,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-17T15:50:16.597Z","etag":null,"topics":["infovis","jitterplot","stripplots"],"latest_commit_sha":null,"homepage":"https://www.uni-ulm.de/in/mi/mi-forschung/viscom/publikationen?category=publication\u0026publication_id=195","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/onc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2021-01-12T16:55:31.000Z","updated_at":"2023-08-25T01:21:49.000Z","dependencies_parsed_at":"2024-11-07T20:57:37.045Z","dependency_job_id":null,"html_url":"https://github.com/onc/BlueNoisePlots","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/onc/BlueNoisePlots","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onc%2FBlueNoisePlots","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onc%2FBlueNoisePlots/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onc%2FBlueNoisePlots/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onc%2FBlueNoisePlots/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onc","download_url":"https://codeload.github.com/onc/BlueNoisePlots/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onc%2FBlueNoisePlots/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265849011,"owners_count":23838195,"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":["infovis","jitterplot","stripplots"],"created_at":"2024-11-07T20:57:31.079Z","updated_at":"2025-07-18T23:08:07.554Z","avatar_url":"https://github.com/onc.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Blue Noise Plots\n\nPython implementation of *Blue Noise Plots*, a novel replacement for jitter plots, published at Eurographics 2021.\n\n[C. van Onzenoodt](https://www.uni-ulm.de/en/in/mi/institute/staff/christian-van-onzenoodt/), [G. Singh](https://people.mpi-inf.mpg.de/~gsingh/), [T. Ropinski](https://www.uni-ulm.de/in/mi/institut/mitarbeiter/timo-ropinski/), and [T. Ritschel](http://www.homepages.ucl.ac.uk/~ucactri/)\n\n![Teaser](https://raw.githubusercontent.com/onc/BlueNoisePlots/main/images/Teaser.png)\n\n[Paper Pre-Print](https://arxiv.org/abs/2102.04072) \n\n[Project Page](https://www.uni-ulm.de/in/mi/mi-forschung/viscom/publikationen?category=publication\u0026publication_id=195)\n\n## Prerequisites\n\nThis implementation uses tensorflow to enable hardware acceleration on supported platforms (Linux and Windows). Therefore, *Blue Noise Plots* are currently limited by prerequisites of tensorflow:\n\n* Python 3.5–3.8\n* Ubuntu 16.04 or later\n* Windows 7 or later\n* macOS 10.12.6 (Sierra) or later (no GPU support)\n\n### Install dependencies\n\n```\ncd BlueNoisePlots\npip install -r requirements.txt\n```\n\n## Usage\n\n```python\nimport pandas as pd\nfrom blue_noise_plot import blue_noise\n\n# Load data\nmpg_filename = 'csv_data/auto-mpg.data'\ncolumn_names = ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight',\n                'acceleration', 'year', 'origin', 'name']\nmpg = pd.read_csv(mpg_filename, delim_whitespace=True, names=column_names)\nsubset = mpg[mpg['cylinders'].isin([4, 6, 8])]\n\n\n# Blue noise plot of `subset`, using our automatic width computation\npoints = blue_noise(x='mpg', data=subset, orient='h')\nprint('Num Classes: ', len(points))   # Num Classes:  1\nprint('Num Points: ', len(points[0])) # Num Points:  391\n\npoints = blue_noise(x='mpg', hue='cylinders', data=subset, orient='h')\nprint('Num Classes: ', len(points))   # Num Classes:  3\nprint('Num Points: ', len(points[0])) # Num Points:  204\nprint('Num Points: ', len(points[1])) # Num Points:  103\nprint('Num Points: ', len(points[2])) # Num Points:  84\n\npoints = blue_noise(x='mpg', hue='cylinders', data=subset, orient='h')\n\n# Blue noise plot of `subset`, using predefined width.\npoints = blue_noise(x='mpg', hue='cylinders', data=subset, orient='h', plot_width=0.3)\n\n# Render png of the distribution\nblue_noise(x='mpg', hue='cylinders', data=subset, orient='h', size=20, \n           filename='mpg-blue_noise_plot.png')\n```\n\n## Advanced Usage\n\n```python\n# Centralized Blue Noise Plot (see Examples below)\nblue_noise(x='mpg', hue='cylinders', data=subset, centralized=True,\n           orient='h', size=20, filename='mpg-blue_noise_plot.png')\n           \n# Dodged Blue Noise Plot (see Examples below)\nblue_noise(x='mpg', hue='cylinders', data=subset, dodge=True,\n           orient='h', size=20, filename='mpg-blue_noise_plot.png')\n```\n\n## Examples\n\n![Blue Noise Plot examples](https://raw.githubusercontent.com/onc/BlueNoisePlots/main/images/Examples.png)\n\nTo generate the examples, run the following:\n\n```python\ncd examples\npip install -r requirements.txt\n./example_plots.py\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonc%2Fbluenoiseplots","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonc%2Fbluenoiseplots","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonc%2Fbluenoiseplots/lists"}