【问题标题】:how to Display this json like chartjs chart model如何像chartjs图表模型一样显示这个json
【发布时间】:2020-09-02 06:24:48
【问题描述】:

我是 chartjs 的新手我想要使用 chartjs 的图表我有 json 所以我想像这样显示Sample Image is this 所以请帮助我 而json数组是

[
      {
        "ChartGroupName": "Group-A",
        "Apple": 45,
        "Banana": 37,
        "Kiwi_fruit": 60,
        "Blueberry": 70,
        "Orange": 46,
        "Grape_Fruit": 33
      },
      {
        "ChartGroupName": "Group-B",
        "Apple": 50,
        "Banana": 35,
        "Kiwi_fruit": 70,
        "Blueberry": 65,
        "Orange": 40,
        "Grape_Fruit": 53
      },
      {
        "ChartGroupName": "Group-C",
        "Apple": 55,
        "Banana": 39,
        "Kiwi_fruit": 80,
        "Blueberry": 75,
        "Orange": 52,
        "Grape_Fruit": 73
      }
    ]

【问题讨论】:

    标签: angular typescript chartjs-2.6.0


    【解决方案1】:

    如果您的JSON 数据存在于名为data 的数组中,您可以生成labelsdatasets,如下所示:

    const labels = Object.keys(data[0]).slice(1).map(l => l.replace('_', ' '));
    const datasets = data.map((o, i) => ({
        label: o[0],
        data: Object.values(o).slice(1),
        backgroundColor: colors[i]
      })
    );
    

    请看下面的可运行代码 sn-p,它说明了它是如何工作的。

    const data = [
      {
        "ChartGroupName": "Group-A",
        "Apple": 45,
        "Banana": 37,
        "Kiwi_fruit": 60,
        "Blueberry": 70,
        "Orange": 46,
        "Grape_Fruit": 33
      },
      {
        "ChartGroupName": "Group-B",
        "Apple": 50,
        "Banana": 35,
        "Kiwi_fruit": 70,
        "Blueberry": 65,
        "Orange": 40,
        "Grape_Fruit": 53
      },
      {
        "ChartGroupName": "Group-C",
        "Apple": 55,
        "Banana": 39,
        "Kiwi_fruit": 80,
        "Blueberry": 75,
        "Orange": 52,
        "Grape_Fruit": 73
      }
    ];
    const colors = ['orange', 'yellow', 'lightblue']
    
    const labels = Object.keys(data[0]).slice(1).map(l => l.replace('_', ' '));
    const datasets = data.map((o, i) => ({
        label: o['ChartGroupName'],
        data: Object.values(o).slice(1),
        backgroundColor: colors[i]
      })
    );
    
    new Chart('myChart', {
      type: 'bar',
      data: {
        labels: labels,
        datasets: datasets
      },
      options: {
        scales: {
          yAxes: [{
            ticks: {
              beginAtZero: true
            }
          }],
        }
      }
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js"></script>
    <canvas id="myChart"></canvas>

    【讨论】:

    • 你在这里基于 Json 硬编码,但我想从服务中动态
    • 请查看我更新的答案,该答案现在还显示了如何根据给定的 JSON 数据生成图表配置。
    • 非常感谢您的帮助@uminder,它运行良好。我想获得动态的随机颜色。真是你的了不起。我希望你也为此提供解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-10
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-01
    相关资源
    最近更新 更多