https://github.com/holoviz/panel Skip to content Sign up * Product + Features + Mobile + Actions + Codespaces + Packages + Security + Code review + Issues + Integrations + GitHub Sponsors + Customer stories * Team * Enterprise * Explore + Explore GitHub + Learn and contribute + Topics + Collections + Trending + Learning Lab + Open source guides + Connect with others + The ReadME Project + Events + Community forum + GitHub Education + GitHub Stars program * Marketplace * Pricing + Plans + Compare plans + Contact Sales + Education [ ] * # In this repository All GitHub | Jump to | * No suggested jump to results * # In this repository All GitHub | Jump to | * # In this organization All GitHub | Jump to | * # In this repository All GitHub | Jump to | Sign in Sign up {{ message }} holoviz / panel Public * Notifications * Fork 257 * Star 1.9k A high-level app and dashboarding solution for Python panel.holoviz.org License BSD-3-Clause license 1.9k stars 257 forks Star Notifications * Code * Issues 486 * Pull requests 25 * Actions * Projects 0 * Wiki * Security * Insights More * Code * Issues * Pull requests * Actions * Projects * Wiki * Security * Insights This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. master Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags 40 branches 395 tags Code Latest commit @philippjfr philippjfr Do not switch asyncio loop in Jupyter (#3534) ... 76f6dbe May 19, 2022 Do not switch asyncio loop in Jupyter (#3534) 76f6dbe Git stats * 2,092 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github/workflows binder conda.recipe doc examples jupyter-config/jupyter_server_config.d panel .gitattributes .gitignore .pre-commit-config.yaml CHANGELOG.md CODE_OF_CONDUCT.md LICENSE.txt MANIFEST.in README.md codecov.yml dodo.py environment.yml postBuild pyproject.toml setup.cfg setup.py tox.ini View code [ ] A high-level app and dashboarding solution for Python What is it? Using Panel for declarative, reactive programming Usage Editor + Server JupyterLab and Classic notebook Google Colab VSCode notebook nteract and other ipywidgets notebooks Other environments Sponsors README.md [logo_horizontal_light_theme] --------------------------------------------------------------------- A high-level app and dashboarding solution for Python Build Status Linux/MacOS Build Status Coverage codecov Latest dev Github tag dev-site release Latest Github release PyPI version panel version conda-forge release version defaults version Docs gh-pages site Binder Binder Support Discourse What is it? Panel provides tools for easily composing widgets, plots, tables, and other viewable objects and controls into custom analysis tools, apps, and dashboards. Panel works with visualizations from Altair, Bokeh, HoloViews, Matplotlib, Plotly, pydeck, PyVista and many other Python plotting libraries, making them instantly viewable either individually or when combined with interactive widgets that control them. Panel works equally well in Jupyter Notebooks, for creating quick data-exploration tools, or as standalone deployed apps and dashboards, and allows you to easily switch between those contexts as needed. Panel makes it simple to make: * Plots with user-defined controls * Property sheets for editing parameters of objects in a workflow * Control panels for simulations or experiments * Custom data-exploration tools * Dashboards reporting key performance indicators (KPIs) and trends * Streaming applications * Data-rich Python-backed web servers * and anything in between Panel objects are reactive, immediately updating to reflect changes to their state, which makes it simple to compose viewable objects and link them into simple, one-off apps to do a specific exploratory task. The same objects can then be reused in more complex combinations to build more ambitious apps, while always sharing the same code that works well on its own. Attractors Gapminders NYC Taxi Glaciers Portfolio [687474703a] [687474703a] [687474703a] [687474703a] Optimizer [687474703a] Using Panel for declarative, reactive programming Panel can also be used with the separate Param project to create interactively configurable objects with or without associated visualizations, in a fully declarative way. With this approach, you declare your configurable object using the pure-Python, zero-dependency param library, annotating your code with parameter ranges, documentation, and dependencies between parameters and your code. Using this information, you can make all of your domain-specific code be optionally configurable in a GUI, with optional visual displays and debugging information if you like, all with just a few lines of declarations. With this approach, you don't ever have to commit to whether your code will be used in a notebook, in a GUI app, or completely behind the scenes in batch processing or reports -- the same code can support all of these cases equally well, once you declare the associated parameters and constraints. This approach lets you completely separate your domain-specific code from anything to do with web browsers, GUI toolkits, or other volatile technologies that would otherwise make your hard work become obsolete as they change over time. Usage Panel can be used in a wide range of development environments: Editor + Server You can edit your Panel code as a .py file in any text editor, marking the objects you want to render as .servable(), then launch a server with: panel serve my_script.py --show --autoreload to open a browser tab showing your app or dashboard and backed by a live Python process. The --autoreload flag ensures that the app reloads whenever you make a change to the Python source. JupyterLab and Classic notebook In the classic Jupyter notebook environment and JupyterLab, first make sure to load the pn.extension(). Panel objects will then render themselves if they are the last item in a notebook cell. For versions of jupyterlab>=3.0 the necessary extension is automatically bundled in the pyviz_comms package, which must be >=2.0. However note that for version of jupyterlab<3.0 you must also manually install the JupyterLab extension with: jupyter labextension install @pyviz/jupyterlab_pyviz Google Colab In the Google Colaboratory notebook, first make sure to load the pn.extension(). Panel objects will then render themselves if they are the last item in a notebook cell. Please note that in Colab rendering for each notebook cell is isolated, which means that every cell must reload the Panel extension code separately. This will result in somewhat slower and larger notebook than with other notebook technologies. VSCode notebook Visual Studio Code (VSCode) versions 2020.4.74986 and later support ipywidgets, and Panel objects can be used as ipywidgets since Panel 0.10 thanks to jupyter_bokeh, which means that you can now use Panel components interactively in VSCode. Ensure you install jupyter_bokeh with pip install jupyter_bokeh or conda install -c bokeh jupyter_bokeh and then enable the extension with pn.extension(). nteract and other ipywidgets notebooks In other notebook environments that support rendering ipywidgets interactively, such as nteract, you can use the same underlying ipywidgets support as for vscode: Install jupyter_bokeh and then use pn.extension(comms='ipywidgets'). Other environments If your development environment offers embedded Python processes but does not support ipywidgets or Jupyter "comms" (communication channels), you will notice that some or all interactive functionality is missing. Some widgets that operate only in JavaScript will work fine, but others require communication channels between JavaScript and Python. In such cases you can either request ipywidgets or Panel support from the editor or environment, or else use the Editor + Server approach above. Sponsors The Panel project is grateful for the sponsorship by the organizations and companies below: Anaconda Logo Blackstone Logo About A high-level app and dashboarding solution for Python panel.holoviz.org Topics gui panel dashboards holoviz control-panels Resources Readme License BSD-3-Clause license Code of conduct Code of conduct Stars 1.9k stars Watchers 39 watching Forks 257 forks Releases 39 Version 0.13.0 Latest Apr 15, 2022 + 38 releases Packages 0 No packages published Used by 3.2k * @SilviaEiden * @AsmaSyedTajuddin * @AsmaSyedTajuddin * @tsoonjin * @ZeynepAkkus * @KangnamUniv-ML * @imbikramsaha * @Lizzydrb + 3,182 Contributors 96 * @philippjfr * @traviscibot * @MarcSkovMadsen * @xavArtley * @jbednar * @maximlt * @Hoxbro * @dependabot[bot] * @jlstevens * @ceball * @jsignell + 85 contributors Languages * Python 76.4% * TypeScript 13.5% * CSS 6.1% * HTML 3.5% * Other 0.5% * (c) 2022 GitHub, Inc. * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time. You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.