This plugin provides quick and easy tooltips for your Chartist charts. It's published on npm as chartist-plugin-tooltips-updated.
The following options can be configured when the plugin is loaded. Their default values are as shown.
var defaultOptions = {
  currency: undefined, // Accepts '£', '$', '€', etc.
  // Append curreny information e.g. 4000 => €4,000
  tooltipFnc: undefined, // Accepts function
  // Build custom tooltip
  transformTooltipTextFnc: undefined, // Accepts function
  // Transform tooltip text
  class: undefined, // Accecpts 'class1', 'class1 class2', etc.
  // Adds class(es) to the tooltip wrapper
  anchorToPoint: false, // Accepts true or false
  // Tooltips do not follow mouse movement -- they are anchored to the point / bar.
  appendToBody: true, // Accepts true or false
  // Appends tooltips to body instead of chart container,
  metaIsHTML: false // Accepts true or false
  // Whether to parse the meta value as HTML or plain text
};yarn add chartist-plugin-tooltips-updated
Include the JavaScript script file of the plugin either using one of two options:
- Include it using a <script>tag:
<script src="node_modules/chartist/dist/index.umd.js"></script>
<script src="node_modules/chartist-plugin-tooltips-updated/dist/chartist-plugin-tooltip.min.js"></script>
<script>
  var chart = new Chartist.LineChart('.ct-chart', data, {
    plugins: [
      Chartist.plugins.tooltip()
    ]
  });
</script>- Include it using an import:
import { LineChart } from 'chartist';
import ChartistTooltip from 'chartist-plugin-tooltips-updated';
let chart = new LineChart('.ct-chart', data, {
  plugins: [
    ChartistTooltip()
  ]
});Warning: The version 0.0.17 of the original package available on npm included a s suffix for the tooltip function
which now has been removed,
see the related commit.
Include the two CSS files in your project:
- node_modules/chartist/dist/index.css
- node_modules/chartist-plugin-tooltips-updated/dist/chartist-plugin-tooltip.css
Either using one of two options:
- Include them in the <head>of your HTML file
<link rel="stylesheet" href="node_modules/chartist/dist/index.css">
<link rel="stylesheet" href="node_modules/chartist-plugin-tooltips-updated/dist/chartist-plugin-tooltip.css">- Include them as Webpack CSS imports
import 'chartist/dist/index.css';
import 'chartist-plugin-tooltips-updated/dist/chartist-plugin-tooltip.css';Without a descriptive text:
var chart = new Chartist.LineChart('.ct-chart', {
  labels: [1, 2, 3, 4, 5, 6, 7],
  series: [
    [1, 5, 3, 4, 6, 2, 3],
    [2, 4, 2, 5, 4, 3, 6]
  ]
}, {
  plugins: [
    Chartist.plugins.tooltip()
  ]
});With a descriptive text:
var chart = new Chartist.LineChart('.ct-chart', {
  labels: [1, 2, 3],
  series: [
    [
      {meta: 'description', value: 1},
      {meta: 'description', value: 5},
      {meta: 'description', value: 3}
    ],
    [
      {meta: 'other description', value: 2},
      {meta: 'other description', value: 4},
      {meta: 'other description', value: 2}
    ]
  ]
}, {
  plugins: [
    Chartist.plugins.tooltip()
  ]
});With a custom formatted descriptive text:
var chart = new Chartist.LineChart('.ct-chart', {
  labels: [1, 2, 3],
  series: [
    [
      {meta: 'description', value: 1},
      {meta: 'description', value: 5},
      {meta: 'description', value: 3}
    ],
    [
      {meta: 'other description', value: 2},
      {meta: 'other description', value: 4},
      {meta: 'other description', value: 2}
    ]
  ]
}, {
  plugins: [
    Chartist.plugins.tooltip({
      currency: '$',
      class: 'class1 class2',
      appendToBody: true
    })
  ]
});If you change the CSS properties of the tooltip, you shouldn't change the display property,
otherwise the tooltip may be incorrectly positioned.
This guide is a bit outdated and may not work with new versions of the plugin.
In Chartist, you can replace the default point element with a custom element. There is a pretty demo which uses events to replace the default point graphics. If you want the tooltip to work fine with a new element, you need to include two more properties to your custom element:
'ct:value': data.value.y,
  'ct:meta': data.meta,And you have to add the following CSS rule to the new element by using the style option
or by adding this rule to your css class:
pointer-events: all!important;(If you want to read more about, why you have to add this css rule take a look at chartist-plugin-tooltip#72)
So the final code could look like this. Here is a live demo
chart.on('draw', function(data) {
  // If the draw event was triggered from drawing a point on the line chart
  if(data.type === 'point') {
    // We are creating a new path SVG element that draws a triangle around the point coordinates
    var circle = new Chartist.Svg('circle', {
      cx: [data.x],
      cy: [data.y],
      r: [5],
      'ct:value': data.value.y,
      'ct:meta': data.meta,
      style: 'pointer-events: all !important',
      class: 'my-cool-point',
    }, 'ct-area');
    // With data.element we get the Chartist SVG wrapper and we can replace the original point drawn by Chartist with our newly created triangle
    data.element.replace(circle);
  }
});plugins: [
  Chartist.plugins.tooltip({
    appendToBody: true,
    pointClass: 'my-cool-point'
  })
]This repository is a fork of tmmdata/chartist-plugin-tooltip. (Thanks for the great work!)
It seems as this repository is no longer maintained, that's why I decided to fork it and include several pull requests and update the dependencies.
- #87 Document new meta options from meisanerd
- #131 (feature) add chartist-plugin-tooltip.scss to dist folder from Zadvornyi
- #136 Fix issue checking chart type when uglified from jkowens
- #128 Fixes width/height being incorrect from jdoyle65
- #160 Fixed memory leak from callanto
- #173 Adding support for SOLID donut graphs from AlexLaforge
- #9 Add support to IE11 from Borrajo
- #20 Support for Chartist v1 from stklcode
- Upgrade to Yarn
- Up-to-date dependencies
- Latest version published on npm