base on Interactive Data Visualization in the browser, from Python <picture>
<source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/bokeh/pm/main/assets/logos/SVG/bokeh-logo-white-text-no-padding.svg">
<img src="https://raw.githubusercontent.com/bokeh/pm/main/assets/logos/SVG/bokeh-logo-black-text-no-padding.svg" alt="Bokeh logo -- text is white in dark theme and black in light theme" height=60/>
</picture>
----
[Bokeh](https://bokeh.org) is an interactive visualization library for modern web browsers. It provides elegant, concise construction of versatile graphics and affords high-performance interactivity across large or streaming datasets. Bokeh can help anyone who wants to create interactive plots, dashboards, and data applications quickly and easily.
<table>
<tr>
<td>Package</td>
<td>
<img src="https://img.shields.io/pypi/v/bokeh?label=Version&color=ECD078&style=for-the-badge"
alt="Latest package version" />
</td>
<td>
<a href="https://docs.bokeh.org/en/latest/docs/first_steps/installation.html">
<img src="https://img.shields.io/pypi/pyversions/bokeh?color=ECD078&style=for-the-badge"
alt="Supported Python versions" />
</a>
</td>
<td>
<a href="https://github.com/bokeh/bokeh/blob/-/LICENSE.txt">
<img src="https://img.shields.io/github/license/bokeh/bokeh.svg?color=ECD078&style=for-the-badge"
alt="Bokeh license (BSD 3-clause)" />
</a>
</td>
</tr>
<tr>
<td>Project</td>
<td>
<img src="https://img.shields.io/github/contributors-anon/bokeh/bokeh?color=ECD078&style=for-the-badge"
alt="Github contributors" />
</td>
<td>
<a href="https://numfocus.org">
<img src="https://img.shields.io/badge/sponsor-numfocus-ECD078?style=for-the-badge"
alt="Link to NumFOCUS" />
</a>
</td>
<td>
<a href="https://docs.bokeh.org/en/latest/">
<img src="https://img.shields.io/badge/documentation-latest-ECD078?style=for-the-badge"
alt="Link to documentation" />
</a>
</td>
</tr>
<tr>
<td>Downloads</td>
<td>
<a href="https://docs.bokeh.org/en/latest/docs/first_steps/installation.html">
<img src="https://img.shields.io/pypi/dm/bokeh?color=D98B43&label=pypi&logo=python&logoColor=yellow&style=for-the-badge"
alt="PyPI downloads per month" />
</a>
</td>
<td>
<a href="https://docs.bokeh.org/en/latest/docs/first_steps/installation.html">
<img src="https://img.shields.io/conda/d/conda-forge/bokeh?style=for-the-badge&logo=python&color=D98B43&logoColor=yellow"
alt="Conda downloads per month" />
</a>
</td>
<td>
<a href="https://www.npmjs.com/package/@bokeh/bokehjs">
<img src="https://img.shields.io/npm/dm/%40bokeh/bokehjs?style=for-the-badge&logo=npm&label=NPM&color=D98B43"
alt="NPM downloads per month" />
</a>
</td>
</tr>
<tr>
<td>Build</td>
<td>
<a href="https://github.com/bokeh/bokeh/actions">
<img src="https://img.shields.io/github/actions/workflow/status/bokeh/bokeh/bokeh-ci.yml?label=Bokeh-CI&logo=github&style=for-the-badge"
alt="Current Bokeh-CI github actions build status" />
</a>
</td>
<td>
<a href="https://github.com/bokeh/bokeh/actions">
<img src="https://img.shields.io/github/actions/workflow/status/bokeh/bokeh/bokehjs-ci.yml?label=BokehJS-CI&logo=github&style=for-the-badge"
alt="Current BokehJS-CI github actions build status" />
</a>
</td>
<td>
<a href="https://codecov.io/gh/bokeh/bokeh" >
<img src="https://img.shields.io/codecov/c/github/bokeh/bokeh?logo=codecov&style=for-the-badge&token=bhEzGkDUaw"
alt="Codecov coverage percentage" />
</a>
</td>
</tr>
<tr>
<td>Community</td>
<td>
<a href="https://discourse.bokeh.org">
<img src="https://img.shields.io/discourse/https/discourse.bokeh.org/posts.svg?color=blue&logo=discourse&style=for-the-badge"
alt="Community support on discourse.bokeh.org" />
</a>
</td>
<td>
<a href="https://stackoverflow.com/questions/tagged/bokeh">
<img src="https://img.shields.io/stackexchange/stackoverflow/t/%5Bbokeh%5D?style=for-the-badge&logo=stackoverflow&label=stackoverflow&color=blue"
alt="Bokeh-tagged questions on Stack Overflow" />
</a>
</td>
</tr>
</table>
*Consider [making a donation](https://opencollective.com/bokeh) if you enjoy using Bokeh and want to support its development.*
![4x9 image grid of Bokeh plots](https://user-images.githubusercontent.com/1078448/190840954-dc243c99-9295-44de-88e9-fafd0f4f7f8a.jpg)
## Installation
To install Bokeh and its required dependencies using `pip`, enter the following command at a Bash or Windows command prompt:
```
pip install bokeh
```
To install `conda`, enter the following command at a Bash or Windows command prompt:
```
conda install bokeh
```
Refer to the [installation documentation](https://docs.bokeh.org/en/latest/docs/first_steps/installation.html) for more details.
## Resources
Once Bokeh is installed, check out the [first steps guides](https://docs.bokeh.org/en/latest/docs/first_steps.html#first-steps-guides).
Visit the [full documentation site](https://docs.bokeh.org) to view the [User's Guide](https://docs.bokeh.org/en/latest/docs/user_guide.html) or [launch the Bokeh tutorial](https://mybinder.org/v2/gh/bokeh/bokeh-notebooks/HEAD?labpath=index.ipynb) to learn about Bokeh in live Jupyter Notebooks.
Community support is available on the [Project Discourse](https://discourse.bokeh.org).
If you would like to contribute to Bokeh, please review the [Contributor Guide](https://docs.bokeh.org/en/latest/docs/dev_guide.html) and [request an invitation to the Bokeh Dev Slack workspace](https://slack-invite.bokeh.org/).
*Note: Everyone who engages in the Bokeh project's discussion forums, codebases, and issue trackers is expected to follow the [Code of Conduct](https://github.com/bokeh/bokeh/blob/branch-3.0/docs/CODE_OF_CONDUCT.md).*
## Support
### Fiscal Support
The Bokeh project is grateful for [individual contributions](https://opencollective.com/bokeh), as well as for monetary support from the organizations and companies listed below:
<table align="center">
<tr>
<td>
<a href="https://www.numfocus.org/">
<img src="https://static.bokeh.org/sponsor/numfocus.svg"
alt="NumFocus Logo" width="200"/>
</a>
</td>
<td>
<a href="https://chanzuckerberg.com/">
<img src="https://static.bokeh.org/sponsor/czi.svg"
alt="CZI Logo" width="200"/>
</a>
</td>
<td colspan="2">
<a href="https://www.blackstone.com/the-firm/">
<img src="https://static.bokeh.org/sponsor/blackstone.png"
alt="Blackstone Logo" width="400"/>
</a>
</td>
</tr>
<tr>
<td>
<a href="https://tidelift.com/">
<img src="https://static.bokeh.org/sponsor/tidelift.svg"
alt="TideLift Logo" width="200"/>
</a>
</td>
<td>
<a href="https://www.anaconda.com/">
<img src="https://static.bokeh.org/sponsor/anaconda.png"
alt="Anaconda Logo" width="200"/>
</a>
</td>
<td>
<a href="https://www.nvidia.com">
<img src="https://static.bokeh.org/sponsor/nvidia.png"
alt="NVidia Logo" width="200"/>
</a>
</td>
<td>
<a href="https://developer.nvidia.com/rapids">
<img src="https://static.bokeh.org/sponsor/rapids.png"
alt="Rapids Logo" width="200"/>
</a>
</td>
</tr>
</table>
If your company uses Bokeh and is able to sponsor the project, please contact <a href="
[email protected]">
[email protected]</a>
*Bokeh is a Sponsored Project of NumFOCUS, a 501(c)(3) nonprofit charity in the United States. NumFOCUS provides Bokeh with fiscal, legal, and administrative support to help ensure the health and sustainability of the project. Visit [numfocus.org](https://numfocus.org) for more information.*
*Donations to Bokeh are managed by NumFOCUS. For donors in the United States, your gift is tax-deductible to the extent provided by law. As with any donation, you should consult with your tax adviser about your particular tax situation.*
### In-kind Support
Non-monetary support can help with development, collaboration, infrastructure, security, and vulnerability management. The Bokeh project is grateful to the following companies for their donation of services:
* [Amazon Web Services](https://aws.amazon.com/)
* [GitGuardian](https://gitguardian.com/)
* [GitHub](https://github.com/)
* [makepath](https://makepath.com/)
* [Pingdom](https://www.pingdom.com/website-monitoring)
* [Slack](https://slack.com)
* [QuestionScout](https://www.questionscout.com/)
* [1Password](https://1password.com/)
", Assign "at most 3 tags" to the expected json: {"id":"3455","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"