【问题标题】:Add text inside doughnut chart from chart js-2 in react在反应中从图表 js-2 在圆环图中添加文本
【发布时间】:2017-08-03 05:07:48
【问题描述】:

我想在我的甜甜圈饼图中添加一条短信。更具体地说,我想要这样的东西:

我在堆栈溢出中遇到了同样的问题,因为他们在 jquery 中使用图表 js,因为我是 javascript 新手,所以我很困惑。这就是我定义我的饼图的方式:

<Doughnut
            data={sectorsData}
            width={250}
            height={250}
            options={{
              legend: {
                display: false
              },
              maintainAspectRatio: false,
              responsive: true,
              cutoutPercentage: 60
            }}
          />

【问题讨论】:

  • 你找到解决办法了吗?
  • @LucaSpeedStack 我添加了一个例子
  • @user7334203 您是否设法在新行中显示sectors

标签: javascript reactjs pie-chart react-chartjs


【解决方案1】:

我的示例使用数据上的属性text 来指定内部文本:

const data = {
  labels: [...],
  datasets: [...],
  text: '23%'
};

import React from 'react';
import ReactDOM from 'react-dom';
import {Doughnut} from 'react-chartjs-2';

// some of this code is a variation on https://jsfiddle.net/cmyker/u6rr5moq/
var originalDoughnutDraw = Chart.controllers.doughnut.prototype.draw;
Chart.helpers.extend(Chart.controllers.doughnut.prototype, {
  draw: function() {
    originalDoughnutDraw.apply(this, arguments);
    
    var chart = this.chart.chart;
    var ctx = chart.ctx;
    var width = chart.width;
    var height = chart.height;

    var fontSize = (height / 114).toFixed(2);
    ctx.font = fontSize + "em Verdana";
    ctx.textBaseline = "middle";

    var text = chart.config.data.text,
        textX = Math.round((width - ctx.measureText(text).width) / 2),
        textY = height / 2;

    ctx.fillText(text, textX, textY);
  }
});

const data = {
	labels: [
		'Red',
		'Green',
		'Yellow'
	],
	datasets: [{
		data: [300, 50, 100],
		backgroundColor: [
		'#FF6384',
		'#36A2EB',
		'#FFCE56'
		],
		hoverBackgroundColor: [
		'#FF6384',
		'#36A2EB',
		'#FFCE56'
		]
	}],
  text: '23%'
};

class DonutWithText extends React.Component {

  render() {
    return (
      <div>
        <h2>React Doughnut with Text Example</h2>
        <Doughnut data={data} />
      </div>
    );
  }
};

ReactDOM.render(
  <DonutWithText />,
  document.getElementById('root')
);
<script src="https://gor181.github.io/react-chartjs-2/common.js"></script>
<script src="https://gor181.github.io/react-chartjs-2/bundle.js"></script>

<div id="root">
</div>

由于一些奇怪的控制台错误,在运行 CodeSnippet 时,您必须向下滚动一点才能看到。

它在 CodePen 中正常工作,我写的地方:http://codepen.io/anon/pen/OpdBOq?editors=1010

【讨论】:

  • 很好的答案,但这不是确切的情况。我的布局不同
  • @K Scandrett 你能解释一下你从哪里得到代码中的图表吗? var originalDoughnutDraw = Chart.controllers.doughnut.prototype.draw; ?
  • @Shahnad Chart 来自 react-chartjs-2 库
  • @Django Code sn-p 上面的作品 - 如果你向下滚动(并忽略 SO 安全错误)。为了让 Codepen 再次工作(我认为他们已经删除了脚本引用)只需将上面的脚本引用添加到 HTML &lt;script src="https://gor181.github.io/react-chartjs-2/common.js"&gt;&lt;/script&gt; &lt;script src="https://gor181.github.io/react-chartjs-2/bundle.js"&gt;&lt;/script&gt;&lt;div id="root"&gt; &lt;/div&gt;
  • 当我尝试使用这个例子时。我收到“未定义图表”。有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
相关资源
最近更新 更多