IgrDataChartのバブルシリーズでバブルごとに異なる内容のカスタムツールチップを表示したい場合は、IgrBubbleSeriesのtooltipTemplateプロパティを使用します。

IgrBubbleSeries の設定

バブルシリーズを表示するIgrBubbleSeriesを、X軸・Y軸となるIgrNumericXAxis・IgrNumericYAxisとともに配置します。

<IgrDataChart>
  <IgrNumericXAxis name="xAxis" title="一人当たりGDP(ドル)"></IgrNumericXAxis>
  <IgrNumericYAxis name="yAxis" title="平均寿命(年)" minimumValue={60} maximumValue={90}></IgrNumericYAxis>
  <IgrBubbleSeries
    name="bubbleSeries1"
    dataSource={bubbleData}
    xMemberPath="gdpPerCapita"
    yMemberPath="lifeExpectancy"
    radiusMemberPath="population"
    xAxisName="xAxis"
    yAxisName="yAxis">
  </IgrBubbleSeries>
</IgrDataChart>

tooltipTemplate の使用

IgrBubbleSeriesのtooltipTemplateプロパティに、IChartTooltipPropsを受け取る関数を設定すると、その戻り値の内容でツールチップが描画されます。関数内ではprops.dataContext.itemからホバー中のバブルのデータを取得し、任意のレイアウトのJSXを返すことができます。

const createBubbleTooltipTemplate = (props: IChartTooltipProps) => {
  if (!props.dataContext) return null;
  const dataItem = props.dataContext.item as BubblePoint;
  if (!dataItem) return null;

  return (
    <div className="ui-chart-default-tooltip-content" style={{ whiteSpace: 'nowrap' }}>
      <div style={{ fontWeight: 'bold', color: props.dataContext.series.actualBrush }}>{dataItem.country}</div>
      <div>一人当たりGDP: {dataItem.gdpPerCapita.toLocaleString()} (ドル)</div>
      <div>平均寿命: {dataItem.lifeExpectancy} (年)</div>
      <div>人口: {dataItem.population} (百万人)</div>
    </div>
  );
}

作成した関数は、IgrBubbleSeriesのtooltipTemplateプロパティに渡します。showDefaultTooltiptrueのままにしておくと、ツールチップの表示・非表示の制御自体はデフォルトの挙動を保ちつつ、内容だけがtooltipTemplateの戻り値に差し替わります。

<IgrBubbleSeries
  name="bubbleSeries1"
  dataSource={bubbleData}
  xMemberPath="gdpPerCapita"
  yMemberPath="lifeExpectancy"
  radiusMemberPath="population"
  xAxisName="xAxis"
  yAxisName="yAxis"
  showDefaultTooltip={true}
  tooltipTemplate={createBubbleTooltipTemplate}>
</IgrBubbleSeries>

実行結果

バブルにマウスホバーすると、そのバブルの位置にのみ、tooltipTemplateで定義した内容のツールチップが表示されます。IgrDataToolTipLayerと異なり、プロットエリア内の別の場所にカーソルがある間はホバー対象外のバブルのツールチップが表示されることはなく、ツールチップの内容も自由にカスタマイズできます。

Tagged: