If you use yarn
, you can install the library via:
yarn add vega-tooltip
With npm, you can install it as
npm install vega-tooltip
The tooltip library has the compiled tooltip library in the build
directory:
vega-tooltip/build/vega-tooltip.js
If you want to manually include the library and its dependencies, you can add the following lines to your HTML script tag. Vega Tooltip works with vega
and vega-lite
.
<script src="https://cdn.jsdelivr.net/npm/vega@5"></script>
<script src="https://cdn.jsdelivr.net/npm/vega-lite@4"></script>
<!-- Vega Tooltip -->
<script src="https://cdn.jsdelivr.net/npm/vega-tooltip"></script>
Note that if you use Vega-Embed to deploy your visualization, you already have Vega Tooltip and don't need to do anything.
Instead of including Vega Tooltip as a script, you can import it in your bundle.
import vegaTooltip from 'vega-tooltip';
In your HTML <body>
, create a placeholder for your visualization. Give the placeholder a unique id
, to which you can later refer in your JavaScript. For example:
<!-- Placeholder for my plot -->
<div id="vis"></div>
Alternatively, you can create a runtime dataflow of the visualization using vega.parse
, then pass this runtime dataflow to create a View
. Note that the following JavaScript code refers to the visualization placeholder by id selector (#vis
).
var runtime = vega.parse(spec);
var view = new vega.View(runtime)
.initialize(document.getElementById("vis"))
.run();
For Vega-Lite and Vega. First, create the tooltip handler.
var handler = new vegaTooltip.Handler();
Then register it when you initialize the view.
var runtime = vega.parse(spec);
var view = new vega.View(runtime)
.tooltip(handler.call) // note that you have to use `handler.call`!
.initialize(document.getElementById("vis"))
.run();
You can create your tooltip using vegaTooltip
if you don't have access to the initialization. This function requires the Vega View
as input.
If you get an error vegaTooltip is not a function
, try to replace vegaTooltip
with vegaTooltip.default
. This is not necessary when you bundle your code with webpack, browserify, or rollup.
var runtime = vega.parse(spec);
var view = new vega.View(runtime)
.initialize(document.getElementById("vis"))
.run();
vegaTooltip(view);
You will not see a tooltip if you skip this step.
You have to define the tooltip property in Vega or Vega-Lite. Note that if you don't use vega-tooltip
, Vega will use native tooltips instead. Vega Tooltip automatically formats the data. Literal values are coerced to strings. Arrays will be shown in line. For object values, each key-value pair is displayed in its own row in a table.
Vega tooltip handles some keys in object valued tooltips differently. For example, a field called title
automatically becomes the title of the tooltip. A field called image
automatically adds an embedded image that uses the field value as the URL.
In a Vega spec, you need to set the tooltip
property on the mark for which you want to set a tooltip. If the value is on object, Vega Tooltip renders a table with one row for each key. The value with key title
will not be shown as a row but instead is rendered as a heading in the tooltip.
For example, in your spec you might define a tooltip like this:
...
"tooltip": {"signal": "{'Unemployment Rate': format(datum.unemp.rate, '0.1%')}"}
...
See examples/specs/choropleth.json for an example.
See https://vega.github.io/vega-lite/docs/tooltip.html#using-tooltip-channel for details on how to use the tooltip channel.
Now you should be able to see a tooltip working with your visualization.
Next step: Customizing Your Tooltip