{
 "cranqe_package": "qeviz",
 "files": {
  "qe_viz-0.5.5-py3-none-any.whl": {
   "published": "2026-10-06",
   "sha256": "e473f96a857185fdcd6d66ab5b3d611cd6957b8dc2390b3b7ac6cd7f8ae02201",
   "size": 169819,
   "version": "0.5.5"
  },
  "qe_viz-0.5.5.tar.gz": {
   "published": "2026-10-06",
   "sha256": "dcfa2efb1d0eb6108ab6a9d6e56aca96984887e31ff85a65d347de841946f7c8",
   "size": 176265,
   "version": "0.5.5"
  },
  "qe_viz-0.5.6.9001-py3-none-any.whl": {
   "published": "2026-10-07",
   "sha256": "d37b9749a866201b599ab8cf954b803f3940150444ef5dcf6686202194fd41a8",
   "size": 169873,
   "version": "0.5.6.9001"
  },
  "qe_viz-0.5.6.9001.tar.gz": {
   "published": "2026-10-07",
   "sha256": "781d963209f5293b38b95bae12f5b3a33634a5c5ad9f21ff8101cd8280ed84a1",
   "size": 176311,
   "version": "0.5.6.9001"
  }
 },
 "metadata": {
  "author": "",
  "description": "# qeviz (Python)\n\nInteractive Epistemic Network Analysis (ENA) and Ordered Network Analysis (ONA)\nplots for Python: code networks, group means with confidence intervals, unit\npoints and subtractions, displayed inline in Jupyter or exported as\nself-contained HTML. The same library powers the R package and rENA's plots,\nand a plot built here produces the same picture as one built in R.\n\n## Install\n\nInstall `qe-viz`, import `qeviz`:\n\n```bash\nuv add qe-viz --index qe-libs=https://qe-libs.org/py/simple/\n# or\npip install qe-viz --extra-index-url https://qe-libs.org/py/simple/\n```\n\nPreviously published as `qeviz`; existing installs keep working.\n\n## Quick start\n\nFrom a fitted [qe-ena](https://qe-libs.org/py/project/qe-ena/) model (`import ena`) of rENA's\nRS.data:\n\n```python\nimport pandas as pd\nfrom ena import ENA\nimport qeviz\n\nrs = pd.read_csv(\"rs.data.csv\")   # rENA's inst/extdata/rs.data.csv\ncodes = [\"Data\", \"Technical Constraints\", \"Performance Parameters\",\n         \"Client and Consultant Requests\", \"Design Reasoning\", \"Collaboration\"]\nrs[\"unit\"]  = rs[\"Condition\"] + \"::\" + rs[\"UserName\"]\nrs[\"convo\"] = rs[\"Condition\"] + \"::\" + rs[\"GroupName\"]\nmodel = ENA().fit(rs, \"unit\", \"convo\", codes, window_size=4)\n\np = (qeviz.from_ena(model, group_col=\"Condition\", title=\"FirstGame\")\n       .edges(\"FirstGame\")      # the group's mean network\n       .points()                # every unit, coloured by group\n       .group(\"FirstGame\"))     # the group mean and its 95% CI\np                               # displays inline in Jupyter\np.export_html(\"firstgame.html\") # or a self-contained HTML file\n```\n\n![FirstGame mean network of RS.data with unit points and the group mean](https://gitlab.com/epistemic-analytics/qe-packages/qeviz/-/raw/main/py/docs/qeviz-rs-network.png)\n\nEdge width is proportional to the connection weight, node size to the node's\nsummed edge widths, and colour intensity is scaled across the whole model, so\nseparate plots of one model are comparable.\n\n### From DataFrames\n\nAny ENA output works: one row per code node, one row of edge weights per unit\n(columns named `\"A.B\"`), and one row of positions per unit.\n\n```python\np = qeviz.plot(nodes_df, edges_df, points_df, group_col=\"Condition\",\n               id_col=\"ENA_UNIT\", x_col=\"SVD1\", y_col=\"SVD2\")\n```\n\n## Chain API\n\nEvery method returns a new plot, so several views can branch from one base.\n\n| Method | Draws |\n|---|---|\n| `.edges(\"A\")`, `.edges(\"A\", compare=\"B\")`, `.edges(\"A\", also=\"B\")`, `.edges(unit=\"...\")` | a group's or unit's network; a subtraction; an overlay |\n| `.edges(weights=..., compare=..., colors=..., threshold=(min, max), name=...)` | a network from your own weights (Series, dict, or rows to average) |\n| `.points()`, `.points(units=[...])`, `.points(points=df, color=, shape=, labels=)` | all unit points, or a chosen set |\n| `.group()`, `.group(\"A\", intervals=\"crosshairs\", outlier=True)` | group means with confidence (and outlier) intervals |\n| `.group(points=df, label=\"subset\")` | the mean of any subset of points |\n| `.nodes(\"always\", positions=df, labels={...})` | when to draw code nodes; move or relabel them |\n| `.axes(x=True, y=True)`, `.labels(...)`, `.colors(A=\"#hex\")`, `.range(...)` | axes, labels and fonts, group colours, axis range |\n\n`qeviz.plot(..., title=, range=, scale_points=, center=, palette=)` sets the\nplot-wide options. Arguments mirror the R package's `qe_*()` functions; see the\n[qeviz repository](https://gitlab.com/epistemic-analytics/qe-packages/qeviz)\nfor the full reference.\n\n## Display and export\n\n- In Jupyter, VS Code notebooks or Quarto, a plot returned from a cell renders\n  inline; `p.show()` displays it explicitly.\n- `p.export_html(path)` writes a single self-contained HTML file.",
  "description_content_type": "text/markdown",
  "license": "MIT",
  "name": "qe-viz",
  "project_urls": [],
  "requires_dist": [
   "pandas>=1.3",
   "scipy>=1.7; extra == \"scipy\"",
   "ipython>=7.0; extra == \"jupyter\"",
   "scipy>=1.7; extra == \"full\"",
   "ipython>=7.0; extra == \"full\"",
   "scipy>=1.7; extra == \"dev\"",
   "ipython>=7.0; extra == \"dev\"",
   "pytest>=7.0; extra == \"dev\""
  ],
  "requires_python": ">=3.9",
  "summary": "Interactive ENA / ONA network visualisations",
  "version": "0.5.5"
 },
 "metadata_from": "0.5.5",
 "name": "qe-viz"
}
