javascript - 使用 Chart.js 在条形图中显示未找到记录消息

标签 javascript reactjs charts bar-chart

我想在条形图中没有数据时显示文本消息。我正在使用 react-chart-js-2 和以下代码来显示消息,但它不起作用。我不知道出了什么问题,但我认为这可能有效,因为我指的是这个 fiddle https://jsfiddle.net/x04ptfuu/

Chart.plugins.register({
  afterDraw: function(chart) {
    if (chart.data.datasets.length === 0) {
      // No data is present
      var ctx = chart.chart.ctx;
      var width = chart.chart.width;
      var height = chart.chart.height
      chart.clear();    
      ctx.save();
      ctx.textAlign = 'center';
      ctx.textBaseline = 'middle';
      ctx.font = "16px normal 'Helvetica Nueue'";
      ctx.fillText('No data to display', width / 2, height / 2);
      ctx.restore();
    }
  }
});

我的条形图 Canvas 元素可用于 React ChartJS 2:

<Bar data={this.state.chart2Data}
    height={650}
    width={1200}
    options={{
        title: {
        display: true,
        text: 'Repetitive Observations - Review 2',
        fontSize: 16,
        fontColor: '#000000'
        },
        legend: {
            display: true,
            position: 'top',
            labels: {
                fontColor: '#000000'
            }

        },
        maintainAspectRatio: false,
        plugins: {
            datalabels: {
               display: function(context) {
                return context.dataset.data[context.dataIndex] !== 0},
               color: '#ffffff'
            }
         },
        responsive: false,
        scales: {
            xAxes:[{
              scaleLabel: {
                  display: true,
                  labelString: 'Activity',
                  fontStyle: 'bold',
                  fontColor: '#000000',
                  fontSize: 13
                },
                ticks: {
                    fontColor: '#000000',
                    minRotation: 90
                }
            }],
            yAxes:[{
                ticks: {
                    fontColor: '#000000'
                    }
            }]
        }
    }}  
/>

有人可以帮忙吗?

最佳答案

fiddle您所指的纯粹是 Javascript

在 React 中你有 Conditional Rendering ,

{this.state.chart2Data && this.state.chart2Data.length > 0 ? <Bar data = {this.state.chart2Data}
    height = {
        650
    }
    width = {
        1200
    }
    options = {
        {
            title:
            {
                display: true,
                text: 'Repetitive Observations - Review 2',
                fontSize: 16,
                fontColor: '#000000'
            },
            legend:
            {
                display: true,
                position: 'top',
                labels:
                {
                    fontColor: '#000000'
                }

            },
            maintainAspectRatio: false,
            plugins:
            {
                datalabels:
                {
                    display: function(context)
                    {
                        return context.dataset.data[context.dataIndex] !== 0
                    },
                    color: '#ffffff'
                }
            },
            responsive: false,
            scales:
            {
                xAxes: [
                {
                    scaleLabel:
                    {
                        display: true,
                        labelString: 'Activity',
                        fontStyle: 'bold',
                        fontColor: '#000000',
                        fontSize: 13
                    },
                    ticks:
                    {
                        fontColor: '#000000',
                        minRotation: 90
                    }
                }],
                yAxes: [
                {
                    ticks:
                    {
                        fontColor: '#000000'
                    }
                }]
            }
        }
    }
    />
    :
    <div> No Data to display </div>
}

关于javascript - 使用 Chart.js 在条形图中显示未找到记录消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57476104/

相关文章:

javascript - 当\js是未知命令时,如何在mysql-shell中切换到JS模式?

reactjs - React Router 和 Express 冲突

javascript - 如何格式化 nivo 行中 x 轴的值?

excel - 如何创建显示多个事件的时间线图表?例如。维基百科上的 Metallica 乐队成员时间表

java - JavaFX 中的动画图表

javascript - 使用谷歌折线图实时移动x轴

javascript - Ajax 脚本加载会弄乱浏览器历史记录

javascript - AngularJS 中的可编辑表格单元格

JavaScript:关联数组和映射

javascript - React - 传递的 props 被视为对象,错误提示 'objects are not valid as a react child'