Repository files navigation

CIDOI

Visvis - the object oriented approach to visualization

Visvis is a pure Python library for visualization of 1D to 4D data in an object oriented way. Essentially, visvis is an object oriented layer of Python on top of OpenGl, thereby combining the power of OpenGl with the usability of Python. A Matlab/Matplotlib-like interface in the form of a set of functions allows easy creation of objects (e.g. plot(), imshow(), volshow(), surf()).

Status

Visvis has been relatively stable for several years. I am still maintaining it trying to make sure it keeps working, but do not plan on making any major changes. Visvis will not make use of modern OpenGL. It's API might be a bit idosyncratic (e.g. methods are UpperCamelCase) because I started working on Visvis before I knew about PEP8.

See Vispy for a similar (but more modern) visualization library.

I am now working on PyGfx, which is better in almost every way. A bit lower level though, but people are starting to build higher level API's on top of it ...

Installation

Visvis is cross-platform and runs on Python 2.x and Python 3.x. It depends on numpy, pyopengl.

Installation is best done via pip (pip install visvis) or conda (conda install visvis).

You also need a GUI backend, either of these will do:

  • GLFW -> recommended, runs on asyncio, install using pip install glfw
  • Qt: PySide6, Pyside2, Pyside, PyQt5, or PyQt4
  • Wx
  • GTK
  • FLTK

How visvis works

With visvis a range of different data can be visualized by simply adding world objects to a scene (i.e. an axes). These world objects can be anything from plots (lines with markers), to images, 3D rendered volumes, shaded meshes, or you can program your own world object class. If required, these data can also be moved in time.

Example

Click on the figure to see the code and how one can interact with the figure.

Documentation

The docs are on the wiki. Online documentation is available for all classes and functions. Any questions can be asked in the visvis discussion group.

At EuroScipy 2012, I gave a talk about Visvis. The long version of the presentation can be seen here.

License

Visvis makes use of the liberal BSD license. See license.txt for details.

About

Visvis - the object oriented approach to visualization

Topics

Resources

Stars

240 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

CIDOI

Visvis - the object oriented approach to visualization

Visvis is a pure Python library for visualization of 1D to 4D data in an object oriented way. Essentially, visvis is an object oriented layer of Python on top of OpenGl, thereby combining the power of OpenGl with the usability of Python. A Matlab/Matplotlib-like interface in the form of a set of functions allows easy creation of objects (e.g. plot(), imshow(), volshow(), surf()).

Status

Visvis has been relatively stable for several years. I am still maintaining it trying to make sure it keeps working, but do not plan on making any major changes. Visvis will not make use of modern OpenGL. It's API might be a bit idosyncratic (e.g. methods are UpperCamelCase) because I started working on Visvis before I knew about PEP8.

See Vispy for a similar (but more modern) visualization library.

I am now working on PyGfx, which is better in almost every way. A bit lower level though, but people are starting to build higher level API's on top of it ...

Installation

Visvis is cross-platform and runs on Python 2.x and Python 3.x. It depends on numpy, pyopengl.

Installation is best done via pip (pip install visvis) or conda (conda install visvis).

You also need a GUI backend, either of these will do:

  • GLFW -> recommended, runs on asyncio, install using pip install glfw
  • Qt: PySide6, Pyside2, Pyside, PyQt5, or PyQt4
  • Wx
  • GTK
  • FLTK

How visvis works

With visvis a range of different data can be visualized by simply adding world objects to a scene (i.e. an axes). These world objects can be anything from plots (lines with markers), to images, 3D rendered volumes, shaded meshes, or you can program your own world object class. If required, these data can also be moved in time.

Example

Click on the figure to see the code and how one can interact with the figure.

Documentation

The docs are on the wiki. Online documentation is available for all classes and functions. Any questions can be asked in the visvis discussion group.

At EuroScipy 2012, I gave a talk about Visvis. The long version of the presentation can be seen here.

License

Visvis makes use of the liberal BSD license. See license.txt for details.

About

Visvis - the object oriented approach to visualization

Topics

Resources

Stars

240 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

CIDOI

Visvis - the object oriented approach to visualization

Visvis is a pure Python library for visualization of 1D to 4D data in an object oriented way. Essentially, visvis is an object oriented layer of Python on top of OpenGl, thereby combining the power of OpenGl with the usability of Python. A Matlab/Matplotlib-like interface in the form of a set of functions allows easy creation of objects (e.g. plot(), imshow(), volshow(), surf()).

Status

Visvis has been relatively stable for several years. I am still maintaining it trying to make sure it keeps working, but do not plan on making any major changes. Visvis will not make use of modern OpenGL. It's API might be a bit idosyncratic (e.g. methods are UpperCamelCase) because I started working on Visvis before I knew about PEP8.

See Vispy for a similar (but more modern) visualization library.

I am now working on PyGfx, which is better in almost every way. A bit lower level though, but people are starting to build higher level API's on top of it ...

Installation

Visvis is cross-platform and runs on Python 2.x and Python 3.x. It depends on numpy, pyopengl.

Installation is best done via pip (pip install visvis) or conda (conda install visvis).

You also need a GUI backend, either of these will do:

  • GLFW -> recommended, runs on asyncio, install using pip install glfw
  • Qt: PySide6, Pyside2, Pyside, PyQt5, or PyQt4
  • Wx
  • GTK
  • FLTK

How visvis works

With visvis a range of different data can be visualized by simply adding world objects to a scene (i.e. an axes). These world objects can be anything from plots (lines with markers), to images, 3D rendered volumes, shaded meshes, or you can program your own world object class. If required, these data can also be moved in time.

Example

Click on the figure to see the code and how one can interact with the figure.

Documentation

The docs are on the wiki. Online documentation is available for all classes and functions. Any questions can be asked in the visvis discussion group.

At EuroScipy 2012, I gave a talk about Visvis. The long version of the presentation can be seen here.

License

Visvis makes use of the liberal BSD license. See license.txt for details.

About

Visvis - the object oriented approach to visualization

Topics

Resources

Stars

240 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

CIDOI

Visvis - the object oriented approach to visualization

Visvis is a pure Python library for visualization of 1D to 4D data in an object oriented way. Essentially, visvis is an object oriented layer of Python on top of OpenGl, thereby combining the power of OpenGl with the usability of Python. A Matlab/Matplotlib-like interface in the form of a set of functions allows easy creation of objects (e.g. plot(), imshow(), volshow(), surf()).

Status

Visvis has been relatively stable for several years. I am still maintaining it trying to make sure it keeps working, but do not plan on making any major changes. Visvis will not make use of modern OpenGL. It's API might be a bit idosyncratic (e.g. methods are UpperCamelCase) because I started working on Visvis before I knew about PEP8.

See Vispy for a similar (but more modern) visualization library.

I am now working on PyGfx, which is better in almost every way. A bit lower level though, but people are starting to build higher level API's on top of it ...

Installation

Visvis is cross-platform and runs on Python 2.x and Python 3.x. It depends on numpy, pyopengl.

Installation is best done via pip (pip install visvis) or conda (conda install visvis).

You also need a GUI backend, either of these will do:

  • GLFW -> recommended, runs on asyncio, install using pip install glfw
  • Qt: PySide6, Pyside2, Pyside, PyQt5, or PyQt4
  • Wx
  • GTK
  • FLTK

How visvis works

With visvis a range of different data can be visualized by simply adding world objects to a scene (i.e. an axes). These world objects can be anything from plots (lines with markers), to images, 3D rendered volumes, shaded meshes, or you can program your own world object class. If required, these data can also be moved in time.

Example

Click on the figure to see the code and how one can interact with the figure.

Documentation

The docs are on the wiki. Online documentation is available for all classes and functions. Any questions can be asked in the visvis discussion group.

At EuroScipy 2012, I gave a talk about Visvis. The long version of the presentation can be seen here.

License

Visvis makes use of the liberal BSD license. See license.txt for details.

About

Visvis - the object oriented approach to visualization

Topics

Resources

Stars

240 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

CIDOI

Visvis - the object oriented approach to visualization

Visvis is a pure Python library for visualization of 1D to 4D data in an object oriented way. Essentially, visvis is an object oriented layer of Python on top of OpenGl, thereby combining the power of OpenGl with the usability of Python. A Matlab/Matplotlib-like interface in the form of a set of functions allows easy creation of objects (e.g. plot(), imshow(), volshow(), surf()).

Status

Visvis has been relatively stable for several years. I am still maintaining it trying to make sure it keeps working, but do not plan on making any major changes. Visvis will not make use of modern OpenGL. It's API might be a bit idosyncratic (e.g. methods are UpperCamelCase) because I started working on Visvis before I knew about PEP8.

See Vispy for a similar (but more modern) visualization library.

I am now working on PyGfx, which is better in almost every way. A bit lower level though, but people are starting to build higher level API's on top of it ...

Installation

Visvis is cross-platform and runs on Python 2.x and Python 3.x. It depends on numpy, pyopengl.

Installation is best done via pip (pip install visvis) or conda (conda install visvis).

You also need a GUI backend, either of these will do:

  • GLFW -> recommended, runs on asyncio, install using pip install glfw
  • Qt: PySide6, Pyside2, Pyside, PyQt5, or PyQt4
  • Wx
  • GTK
  • FLTK

How visvis works

With visvis a range of different data can be visualized by simply adding world objects to a scene (i.e. an axes). These world objects can be anything from plots (lines with markers), to images, 3D rendered volumes, shaded meshes, or you can program your own world object class. If required, these data can also be moved in time.

Example

Click on the figure to see the code and how one can interact with the figure.

Documentation

The docs are on the wiki. Online documentation is available for all classes and functions. Any questions can be asked in the visvis discussion group.

At EuroScipy 2012, I gave a talk about Visvis. The long version of the presentation can be seen here.

License

Visvis makes use of the liberal BSD license. See license.txt for details.

About

Visvis - the object oriented approach to visualization

Topics

Resources

Stars

240 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

CIDOI

Visvis - the object oriented approach to visualization

Visvis is a pure Python library for visualization of 1D to 4D data in an object oriented way. Essentially, visvis is an object oriented layer of Python on top of OpenGl, thereby combining the power of OpenGl with the usability of Python. A Matlab/Matplotlib-like interface in the form of a set of functions allows easy creation of objects (e.g. plot(), imshow(), volshow(), surf()).

Status

Visvis has been relatively stable for several years. I am still maintaining it trying to make sure it keeps working, but do not plan on making any major changes. Visvis will not make use of modern OpenGL. It's API might be a bit idosyncratic (e.g. methods are UpperCamelCase) because I started working on Visvis before I knew about PEP8.

See Vispy for a similar (but more modern) visualization library.

I am now working on PyGfx, which is better in almost every way. A bit lower level though, but people are starting to build higher level API's on top of it ...

Installation

Visvis is cross-platform and runs on Python 2.x and Python 3.x. It depends on numpy, pyopengl.

Installation is best done via pip (pip install visvis) or conda (conda install visvis).

You also need a GUI backend, either of these will do:

  • GLFW -> recommended, runs on asyncio, install using pip install glfw
  • Qt: PySide6, Pyside2, Pyside, PyQt5, or PyQt4
  • Wx
  • GTK
  • FLTK

How visvis works

With visvis a range of different data can be visualized by simply adding world objects to a scene (i.e. an axes). These world objects can be anything from plots (lines with markers), to images, 3D rendered volumes, shaded meshes, or you can program your own world object class. If required, these data can also be moved in time.

Example

Click on the figure to see the code and how one can interact with the figure.

Documentation

The docs are on the wiki. Online documentation is available for all classes and functions. Any questions can be asked in the visvis discussion group.

At EuroScipy 2012, I gave a talk about Visvis. The long version of the presentation can be seen here.

License

Visvis makes use of the liberal BSD license. See license.txt for details.

About

Visvis - the object oriented approach to visualization

Topics

Resources

Stars

240 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

CIDOI

Visvis - the object oriented approach to visualization

Visvis is a pure Python library for visualization of 1D to 4D data in an object oriented way. Essentially, visvis is an object oriented layer of Python on top of OpenGl, thereby combining the power of OpenGl with the usability of Python. A Matlab/Matplotlib-like interface in the form of a set of functions allows easy creation of objects (e.g. plot(), imshow(), volshow(), surf()).

Status

Visvis has been relatively stable for several years. I am still maintaining it trying to make sure it keeps working, but do not plan on making any major changes. Visvis will not make use of modern OpenGL. It's API might be a bit idosyncratic (e.g. methods are UpperCamelCase) because I started working on Visvis before I knew about PEP8.

See Vispy for a similar (but more modern) visualization library.

I am now working on PyGfx, which is better in almost every way. A bit lower level though, but people are starting to build higher level API's on top of it ...

Installation

Visvis is cross-platform and runs on Python 2.x and Python 3.x. It depends on numpy, pyopengl.

Installation is best done via pip (pip install visvis) or conda (conda install visvis).

You also need a GUI backend, either of these will do:

  • GLFW -> recommended, runs on asyncio, install using pip install glfw
  • Qt: PySide6, Pyside2, Pyside, PyQt5, or PyQt4
  • Wx
  • GTK
  • FLTK

How visvis works

With visvis a range of different data can be visualized by simply adding world objects to a scene (i.e. an axes). These world objects can be anything from plots (lines with markers), to images, 3D rendered volumes, shaded meshes, or you can program your own world object class. If required, these data can also be moved in time.

Example

Click on the figure to see the code and how one can interact with the figure.

Documentation

The docs are on the wiki. Online documentation is available for all classes and functions. Any questions can be asked in the visvis discussion group.

At EuroScipy 2012, I gave a talk about Visvis. The long version of the presentation can be seen here.

License

Visvis makes use of the liberal BSD license. See license.txt for details.

About

Visvis - the object oriented approach to visualization

Topics

Resources

Stars

240 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

CIDOI

Visvis - the object oriented approach to visualization

Visvis is a pure Python library for visualization of 1D to 4D data in an object oriented way. Essentially, visvis is an object oriented layer of Python on top of OpenGl, thereby combining the power of OpenGl with the usability of Python. A Matlab/Matplotlib-like interface in the form of a set of functions allows easy creation of objects (e.g. plot(), imshow(), volshow(), surf()).

Status

Visvis has been relatively stable for several years. I am still maintaining it trying to make sure it keeps working, but do not plan on making any major changes. Visvis will not make use of modern OpenGL. It's API might be a bit idosyncratic (e.g. methods are UpperCamelCase) because I started working on Visvis before I knew about PEP8.

See Vispy for a similar (but more modern) visualization library.

I am now working on PyGfx, which is better in almost every way. A bit lower level though, but people are starting to build higher level API's on top of it ...

Installation

Visvis is cross-platform and runs on Python 2.x and Python 3.x. It depends on numpy, pyopengl.

Installation is best done via pip (pip install visvis) or conda (conda install visvis).

You also need a GUI backend, either of these will do:

  • GLFW -> recommended, runs on asyncio, install using pip install glfw
  • Qt: PySide6, Pyside2, Pyside, PyQt5, or PyQt4
  • Wx
  • GTK
  • FLTK

How visvis works

With visvis a range of different data can be visualized by simply adding world objects to a scene (i.e. an axes). These world objects can be anything from plots (lines with markers), to images, 3D rendered volumes, shaded meshes, or you can program your own world object class. If required, these data can also be moved in time.

Example

Click on the figure to see the code and how one can interact with the figure.

Documentation

The docs are on the wiki. Online documentation is available for all classes and functions. Any questions can be asked in the visvis discussion group.

At EuroScipy 2012, I gave a talk about Visvis. The long version of the presentation can be seen here.

License

Visvis makes use of the liberal BSD license. See license.txt for details.

About

Visvis - the object oriented approach to visualization

Topics

Resources

Stars

240 stars

Watchers

9 watching

Forks

Releases

Packages

Used by

Contributors

Languages