{"id":16504761,"url":"https://github.com/abarbu/matplotlib-haskell","last_synced_at":"2025-04-09T10:10:30.107Z","repository":{"id":18339787,"uuid":"84047624","full_name":"abarbu/matplotlib-haskell","owner":"abarbu","description":"Haskell bindings for Python's Matplotlib","archived":false,"fork":false,"pushed_at":"2024-04-05T10:06:59.000Z","size":412,"stargazers_count":86,"open_issues_count":8,"forks_count":12,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-02T08:11:36.126Z","etag":null,"topics":["charts","haskell","matplotlib","plot"],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abarbu.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":"2017-03-06T08:19:18.000Z","updated_at":"2025-02-02T00:12:05.000Z","dependencies_parsed_at":"2024-12-17T10:15:37.092Z","dependency_job_id":null,"html_url":"https://github.com/abarbu/matplotlib-haskell","commit_stats":{"total_commits":83,"total_committers":5,"mean_commits":16.6,"dds":0.07228915662650603,"last_synced_commit":"f85bb16bffc746d62b22c1e30c9c75501af5d81c"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abarbu%2Fmatplotlib-haskell","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abarbu%2Fmatplotlib-haskell/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abarbu%2Fmatplotlib-haskell/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abarbu%2Fmatplotlib-haskell/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abarbu","download_url":"https://codeload.github.com/abarbu/matplotlib-haskell/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248018061,"owners_count":21034048,"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":["charts","haskell","matplotlib","plot"],"created_at":"2024-10-11T15:06:36.784Z","updated_at":"2025-04-09T10:10:30.082Z","avatar_url":"https://github.com/abarbu.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"![matplotlib contour plot](https://github.com/abarbu/matplotlib-haskell/raw/master/imgs/contour.png)\n\n# Matplotlib for Haskell\n\n[![Build Status](https://github.com/abarbu/matplotlib-haskell/actions/workflows/CI.yaml/badge.svg)](https://github.com/abarbu/matplotlib-haskell/actions/workflows/CI.yaml)\n[![Hackage](https://img.shields.io/hackage/v/matplotlib.svg)](https://hackage.haskell.org/package/matplotlib)\n\nHaskell bindings to Python's Matplotlib. It's high time that Haskell had a\nfully-fledged plotting library! Examples below.\n\n[Documentation is available on Hackage](https://hackage.haskell.org/package/matplotlib).\n\nIn GHCi:\n\n```haskell\n:set -XExtendedDefaultRules\nimport Graphics.Matplotlib\nonscreen $ contourF (\\a b -\u003e sin (a*pi/180.0) + cos (b*pi/180.0)) (-100) 100 (-200) 200 10\n```\n\nOr in a standalone file\n\n```haskell\n{-# LANGUAGE ExtendedDefaultRules #-}\n\nimport Graphics.Matplotlib\n\nmain = onscreen $ contourF (\\a b -\u003e sin (a*pi/180.0) + cos (degreesRadians b)) (-100) 100 (-200) 200 10\n```\n\nWe need `-XExtendedDefaultRules` to avoid having to manually having to specify certain types.\n\n### Installation\n\nYou will need several python libraries to run this code which can be installed\non Ubuntu machines with the following command:\n\n```bash\nsudo apt-get install -y python3 python3-pip python3-matplotlib python3-numpy python3-tk python-mpltoolkits.basemap python3-scipy dvipng\n```\n\nIf you're using conda\n\n```bash\nconda install -y matplotlib scipy tk\n```\n\nIf you have instructions for other machines or OSes let me know. We require the\n`python3` binary to be available somewhere in the PATH. We run with \n`env python3`.\n\nOnce you have the prerequisites you can install using the standard incantation\n\n```bash\nstack install matplotlib\n```\n\nIf you use LaTeX markup you will need the requisite packages\n\n```bash\nsudo apt-get install -y texlive-full\n```\n\nOr with conda\n\n```bash\nconda install -y -c conda-forge texlive-core\n```\n\n### Examples\n\nClick on any of the examples below to go to the corresponding test that\ngenerates it. Depending on your matplotlib version default colors might be\ndifferent.\n\n[![integral][img_integral]][url_integral]\n[![griddata][img_griddata]][url_griddata]\n[![streamplot][img_streamplot]][url_streamplot]\n[![hist2DLog][img_hist2DLog]][url_hist2DLog]\n[![quadratic][img_quadratic]][url_quadratic]\n[![spines][img_spines]][url_spines]\n[![annotation][img_annotation]][url_annotation]\n[![corr][img_corr]][url_corr]\n[![bivariateNormal][img_bivariateNormal]][url_bivariateNormal]\n[![images][img_images]][url_images]\n[![labelled-histogram][img_labelled-histogram]][url_labelled-histogram]\n[![projections][img_projections]][url_projections]\n[![histogram][img_histogram]][url_histogram]\n[![pcolorlog][img_pcolorlog]][url_pcolorlog]\n[![scatter][img_scatter]][url_scatter]\n[![stacked][img_stacked]][url_stacked]\n[![legend][img_legend]][url_legend]\n[![errorbar][img_errorbar]][url_errorbar]\n[![line-options][img_line-options]][url_line-options]\n[![quiver-fancy][img_quiver-fancy]][url_quiver-fancy]\n[![contour][img_contour]][url_contour]\n[![boxplot][img_boxplot]][url_boxplot]\n[![show-matrix][img_show-matrix]][url_show-matrix]\n[![scatterhist][img_scatterhist]][url_scatterhist]\n[![hinton][img_hinton]][url_hinton]\n[![density][img_density]][url_density]\n[![violinplot][img_violinplot]][url_violinplot]\n[![histMulti][img_histMulti]][url_histMulti]\n[![cumulative][img_cumulative]][url_cumulative]\n[![polar][img_polar]][url_polar]\n[![hists][img_hists]][url_hists]\n[![tex][img_tex]][url_tex]\n[![eventplot][img_eventplot]][url_eventplot]\n[![line-function][img_line-function]][url_line-function]\n[![density-bandwidth][img_density-bandwidth]][url_density-bandwidth]\n[![quiver][img_quiver]][url_quiver]\n[![pie][img_pie]][url_pie]\n\n[img_violinplot]: https://i.imgur.com/iBOfnuL.png \"violinplot\"\n[url_violinplot]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L299\n[img_contour]: https://i.imgur.com/KoAIf9Z.png \"contour\"\n[url_contour]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L223\n[img_tex]: https://i.imgur.com/bR8r579.png \"tex\"\n[url_tex]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L258\n[img_scatterhist]: https://i.imgur.com/9ZIVotE.png \"scatterhist\"\n[url_scatterhist]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L306\n[img_line-options]: https://i.imgur.com/Fahp7QA.png \"line-options\"\n[url_line-options]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L248\n[img_griddata]: https://i.imgur.com/SH83pJK.png \"griddata\"\n[url_griddata]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L603\n[img_pcolorlog]: https://i.imgur.com/ZLUoUqy.png \"pcolorlog\"\n[url_pcolorlog]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L496\n[img_cumulative]: https://i.imgur.com/u5I8NYF.png \"cumulative\"\n[url_cumulative]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L216\n[img_annotation]: https://i.imgur.com/9tdHiaT.png \"annotation\"\n[url_annotation]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L540\n[img_density]: https://i.imgur.com/KS2OhbH.png \"density\"\n[url_density]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L240\n[img_line-function]: https://i.imgur.com/zkpfQqW.png \"line-function\"\n[url_line-function]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L242\n[img_boxplot]: https://i.imgur.com/KigvYSc.png \"boxplot\"\n[url_boxplot]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L293\n[img_show-matrix]: https://i.imgur.com/ajY0A9l.png \"show-matrix\"\n[url_show-matrix]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L268\n[img_histMulti]: https://i.imgur.com/FxEI3EI.png \"histMulti\"\n[url_histMulti]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L335\n[img_streamplot]: https://i.imgur.com/IfHLmkC.png \"streamplot\"\n[url_streamplot]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L583\n[img_pie]: https://i.imgur.com/ljgWXf6.png \"pie\"\n[url_pie]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L517\n[img_corr]: https://i.imgur.com/GnBpDJL.png \"corr\"\n[url_corr]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L253\n[img_projections]: https://i.imgur.com/IlK7Oy3.png \"projections\"\n[url_projections]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L246\n[img_scatter]: https://i.imgur.com/dceKS4I.png \"scatter\"\n[url_scatter]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L218\n[img_legend]: https://i.imgur.com/X46KiUJ.png \"legend\"\n[url_legend]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L271\n[img_density-bandwidth]: https://i.imgur.com/Qgjvrox.png \"density-bandwidth\"\n[url_density-bandwidth]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L237\n[img_bivariateNormal]: https://i.imgur.com/fTSfEzo.png \"bivariateNormal\"\n[url_bivariateNormal]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L466\n[img_hinton]: https://i.imgur.com/m9a4IwL.png \"hinton\"\n[url_hinton]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L381\n[img_quadratic]: https://i.imgur.com/E4AafPD.png \"quadratic\"\n[url_quadratic]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L244\n[img_histogram]: https://i.imgur.com/X37Rmy4.png \"histogram\"\n[url_histogram]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L213\n[img_polar]: https://i.imgur.com/4DAOrF1.png \"polar\"\n[url_polar]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L451\n[img_quiver]: https://i.imgur.com/TcayDLc.png \"quiver\"\n[url_quiver]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L424\n[img_quiver-fancy]: https://i.imgur.com/NsOFHhx.png \"quiver-fancy\"\n[url_quiver-fancy]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L435\n[img_stacked]: https://i.imgur.com/rWIyizX.png \"stacked\"\n[url_stacked]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L524\n[img_spines]: https://i.imgur.com/BryQOY9.png \"spines\"\n[url_spines]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L353\n[img_hist2DLog]: https://i.imgur.com/2fL8oEX.png \"hist2DLog\"\n[url_hist2DLog]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L276\n[img_integral]: https://i.imgur.com/PkepIKR.png \"integral\"\n[url_integral]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L397\n[img_errorbar]: https://i.imgur.com/gi0zEiz.png \"errorbar\"\n[url_errorbar]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L288\n[img_labelled-histogram]: https://i.imgur.com/lCVEpge.png \"labelled-histogram\"\n[url_labelled-histogram]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L225\n[img_eventplot]: https://i.imgur.com/UMT1yku.png \"eventplot\"\n[url_eventplot]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L281\n[img_hists]: https://i.imgur.com/KurE2Sr.png \"hists\"\n[url_hists]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L372\n[img_images]: https://i.imgur.com/R1fhDXC.png \"images\"\n[url_images]: https://github.com/abarbu/matplotlib-haskell/blob/master/test/Spec.hs#L483\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabarbu%2Fmatplotlib-haskell","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabarbu%2Fmatplotlib-haskell","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabarbu%2Fmatplotlib-haskell/lists"}