Skip to main content

A MkDocs plugin for creating interactive graph visualizations of page connections

Project description

MkDocs Graph View

A MkDocs plugin that creates interactive graph visualizations of page connections, inspired by Quartz. Visualize your documentation structure with beautiful, interactive network graphs powered by D3.js.

Features

  • 🎯 Mini Graph View: Shows connected pages in the sidebar (or bottom on mobile)
  • 🌐 Full Graph View: Expandable overlay showing the entire documentation graph
  • 🎨 Material Theme Integration: Seamlessly integrates with Material for MkDocs
  • 📱 Responsive Design: Automatically adapts to mobile and desktop layouts
  • ⚙️ Highly Configurable: Customize physics simulation, visual appearance, and interactions
  • 🏷️ Tag Support: Display page tags in graph labels
  • 🌓 Dark Mode: Full support for light and dark themes
  • Performance: Efficient BFS-based filtering for large documentation sites

Installation

Install the plugin using pip:

pip install mkdocs-graph-view

Quick Start

Add the plugin to your mkdocs.yml:

plugins:
  - search
  - graph

That's it! The plugin will automatically:

  • Create a mini graph in the sidebar showing connected pages
  • Add an expand button to view the full graph
  • Highlight the current page in the graph

Configuration

Basic Configuration

plugins:
  - graph-view:
      enabled: true
      local_graph_depth: 1  # Show connections up to 1 level deep

Advanced Configuration

plugins:
  - graph-view:
      enabled: true

      # Graph depth
      local_graph_depth: 2              # Show 2 levels of connections in sidebar

      # Global graph
      global_graph: true                # Enable full-screen graph overlay

      # Physics simulation
      repel_force: 1.0                  # Node repulsion (higher = more spread)
      center_force: 0.2                 # Pull to center (lower = less centering)
      link_distance: 50                 # Distance between connected nodes

      # Visual settings
      scale: 1.1                        # Overall scale
      font_size: 10                     # Label font size
      show_tags: false                  # Show page tags in labels

      # Interaction
      enable_drag: true                 # Allow dragging nodes
      enable_zoom: true                 # Allow zoom and pan
      focus_on_hover: true              # Highlight connections on hover

Configuration Options

Option Type Default Description
enabled bool true Enable/disable the plugin
local_graph_depth int 1 Number of connection levels to show in mini graph
global_graph bool true Enable full-screen graph view
repel_force float 1.0 Node repulsion strength (0.5-2.0 recommended)
center_force float 0.2 Centering force strength (0.1-0.5 recommended)
link_distance int 50 Pixel distance between connected nodes
scale float 1.1 Overall graph scale
font_size int 10 Font size for node labels
show_tags bool false Display page tags in graph labels
enable_drag bool true Allow dragging nodes
enable_zoom bool true Allow zooming and panning
focus_on_hover bool true Highlight connections on hover

Usage Examples

For Small Documentation Sites (< 50 pages)

plugins:
  - graph-view:
      local_graph_depth: 3              # Can afford deeper depth
      repel_force: 0.5
      link_distance: 30
      focus_on_hover: true

For Large Documentation Sites (> 100 pages)

plugins:
  - graph-view:
      local_graph_depth: 1              # Keep it fast
      repel_force: 0.8                  # More spread
      center_force: 0.2
      link_distance: 50
      font_size: 8                      # Smaller labels
      focus_on_hover: false             # Disable for performance

For Knowledge Base with Tags

plugins:
  - tags                                # Enable tags plugin first
  - graph-view:
      local_graph_depth: 2
      show_tags: true                   # Show tags in labels
      font_size: 11                     # Larger for readability
      focus_on_hover: true

Mobile-Optimized

plugins:
  - graph-view:
      local_graph_depth: 1
      enable_drag: true                 # Touch drag works well
      enable_zoom: true                 # Pinch zoom
      font_size: 12                     # Larger for mobile
      focus_on_hover: false             # Better for touch

How It Works

The plugin:

  1. Extracts Links: Scans all pages and extracts internal links
  2. Builds Graph Data: Creates a network graph of page connections
  3. Filters by Depth: Uses BFS (Breadth-First Search) to find pages within configured depth
  4. Renders with D3.js: Creates interactive visualizations using force-directed layout
  5. Adapts to Layout: Automatically positions graph in sidebar or content area based on viewport

Requirements

  • Python 3.8+
  • MkDocs 1.4.0+
  • Works best with Material for MkDocs theme (but compatible with others)

License

GNU GPLv3 License - see LICENSE file for details

Credits

Inspired by Quartz graph view feature.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support

If you encounter any issues or have questions:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mkdocs_graph_view-0.1.0.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mkdocs_graph_view-0.1.0-py3-none-any.whl (14.4 kB view details)

Uploaded Python 3

File details

Details for the file mkdocs_graph_view-0.1.0.tar.gz.

File metadata

  • Download URL: mkdocs_graph_view-0.1.0.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for mkdocs_graph_view-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5b37695aa019d9a9500472c518b10cbb199328af8e33258f21d0072f628646c9
MD5 5b98abaecddaaaec5757b7d6091fad1f
BLAKE2b-256 1da1aa1503911c1312c0169b17bae91cb68609319fc371e5c61d1df8ddae00d7

See more details on using hashes here.

File details

Details for the file mkdocs_graph_view-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mkdocs_graph_view-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 63176c518696baacf0010f67833ec2caad0c4937d8379c0441f58b0c4ade2326
MD5 38c41e5b24d8010557ec0956e23726c9
BLAKE2b-256 a77c3185aa8482290b44f798ad8fb4ab40ef591f17bfb252a3beb54958e6eb90

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page