{"id":24114940,"url":"https://github.com/palfore/simplegrace","last_synced_at":"2026-06-10T12:31:40.485Z","repository":{"id":227512204,"uuid":"771637470","full_name":"Palfore/SimpleGrace","owner":"Palfore","description":"A simple python wrapper for the XMGrace plotting software, automatically manage plot data while using the GUI for aesthetics.","archived":false,"fork":false,"pushed_at":"2024-03-21T12:20:22.000Z","size":397,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-28T17:02:40.394Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/Palfore.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":"2024-03-13T17:04:52.000Z","updated_at":"2024-03-13T17:04:58.000Z","dependencies_parsed_at":"2024-03-13T18:29:31.255Z","dependency_job_id":"52064cdc-e1d4-494c-8446-e64314958155","html_url":"https://github.com/Palfore/SimpleGrace","commit_stats":null,"previous_names":["palfore/simplegrace"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Palfore/SimpleGrace","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Palfore%2FSimpleGrace","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Palfore%2FSimpleGrace/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Palfore%2FSimpleGrace/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Palfore%2FSimpleGrace/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Palfore","download_url":"https://codeload.github.com/Palfore/SimpleGrace/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Palfore%2FSimpleGrace/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34153482,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-01-11T05:36:04.819Z","updated_at":"2026-06-10T12:31:40.464Z","avatar_url":"https://github.com/Palfore.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SimpleGrace\n\nThis is a stand-alone utility file that wraps the XMGrace plotting software in a simple python interface.\nYou are meant to use this to generate the data portion of the .agr files, while you use the XMGrace GUI to change the visuals.\nThis allows you to use code to generate the data, but a GUI to design the aesthetics of your plots, that way you don't have to deal with cumbersome styling code.\n\n![After Edits](examples/paper_figure/screenshot.png)\n\n\n## Overview\nThis implementation provides a single function call for plot generation.\nXmgrace is well-know for it's high quality and well-established use case in scientific plotting.\nAlthough there are more complete packages, such as [pygrace](https://pypi.org/project/pygrace/),\nthe simplicity and ease of use are the key points here.\n\nDespite the high quality plots, the functionality and ability to dynamically generate plots is difficult.\nThis provides a way to easily generate figures programmatically, leaving the graphical design to the xmgrace GUI.\nAdditionally, to reduce errors, the data generating code should be connected directly to the graphing software,\nso there are no 'translation' issues. So, the values are updated by this software, but the visuals must be done manually.\n\nThis facilitates a workflow where you programmatically generate the data, then work within the interface to set up the visuals.\nIf the data changes, running the function will update the data - not the visuals. It is ideal for the data to be generated, \nwhile a GUI is easier to use for the visuals.\n\n## Example\nHere is an example call:\n\n```python\nimport simple_grace as grace\n\ngrace.Graph('testing.agr', \"This is an example.\", [\n\t(\"group1\", [\n\t\t(\"alternating\", 'xy', [\n\t\t\t(.1, -.1),\n\t\t\t(.2, .4),\n\t\t\t(.3, -.9),\n\t\t\t(.4, 1.6),\n\t\t]),\n\t\t(\"increasing\", 'xydy', [\n\t\t\t(.1, .1, .5),\n\t\t\t(.2, .4, .5),\n\t\t\t(.3, .9, .5),\n\t\t\t(.4, 1.6, .5),\n\t\t])\n\t]),\n\t(\"group2\", [\n\t\t(\"set1\", 'xy', [\n\t\t\t(.1, -.1),\n\t\t\t(.2, .4),\n\t\t\t(.3, -.9),\n\t\t\t(.4, 1.6),\n\t\t]),\n\t\t(\"set2\", 'xydy', [\n\t\t\t(.1, .1, .5),\n\t\t\t(.2, .4, .5),\n\t\t\t(.3, .9, 5),\n\t\t\t(.4, 1.6, .5),\n\t\t])\n\t])\n])\n```\n\nThis is what it looks like when first renders. Notice only one group shows, and clearly some editing is required.\n![Before Edits](examples/before_edit/screenshot.png)\n\nThis is what it looks like after a few minutes of formatting in the XMGrace interface.\n![After Edits](examples/after_edit/screenshot.png)\n\n\n## Limitations\n\nThere are some considerations when adding/removing groups or sets after the initial generation.\n\n- When removing groups/sets, there will be vestigial @lines regarding that group/set's formatting\n- In addition to this, the formatting may get shifted: if S0 is deleted, S1 may have the aesthetics of the now removed S0.\n- It may take two passes to update the legend.\n- It is best to know the shape of the final plot upfront.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalfore%2Fsimplegrace","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpalfore%2Fsimplegrace","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalfore%2Fsimplegrace/lists"}