chart.js vue-cli画雷达图详细配置

2018-11-28  本文已影响0人  郝艳峰Vip

前沿:


最近在项目中由于echart.js 4.1.0版本以及往上不支持雷达图出现刻度轴,而需求又必须是要有刻度轴,所以果断采用chart.js来画雷达图,在画的过程中发现坑是真的多,最基本的文档写的一点都不清楚,全靠试试,简直醉了,现在把我折腾的结果记录下来,方便以后学习使用。
上代码。我是那vue-cli搭的项目,所以需要以下配置,里边注释都写好了,详细往下走

<template>
  <div class="incomeDecomPosition">
    <Loading v-show="isShowLoding"
             :fatherHeight="'610px'"></Loading>
    <div class="top20 W100"></div>
    <div class="productMixContent W100 BorderDDD">
      <noDataLists v-show="isNoData === true"
                   :NoDataHeight="'600px'"
                   :NoDataWords="'暂无数据'"></noDataLists>
      <canvas v-show="isNoData === false"
              id="incomeRadar"
              :style="{width: '100%', height: '600px'}"></canvas>

    </div>
    <div class="bottom20 W100"></div>
  </div>
</template>
<script>
import Chart from "chart.js";
import { fundAscribeExposeList } from "@/api/basicManage";
export default {
  data() {
    return {
      isNoData: false,
      isShowLoding: true,
      fundCode: null,
      dateMonths: ""
    };
  },
  mounted() {
    this.drawStyleFactorExposureRadar();
  },
  methods: {
    drawStyleFactorExposureRadar() {
      var ctx = document.getElementById("incomeRadar").getContext("2d");
      new Chart(ctx, {
        type: "radar",
        data: {
          labels: ["January", "February", "March", "April", "May", "June", "July"],, //图表中每个点周围的字符串数组。
          datasets:  {
          label: ChartsDatas[h].month, //显示的图里的日期  如果最外层的label不设置的话
          data: items, //对应的每一条数据
          fill: false, //不填充线下的区域
          radius: 1,
          borderColor: JiZhunColor[i],
          pointBackgroundColor: JiZhunColor[i],
          backgroundColor: JiZhunColor[i],
          borderColor: JiZhunColor[i],
          pointBackgroundColor: JiZhunColor[i],
          pointBorderColor: JiZhunColor[i],
          pointHoverBackgroundColor: JiZhunColor[i],
          pointHoverBorderColor: JiZhunColor[i]
        };
        },
        //图标的配置项都需要在options里边来完成
        options: {
          title: {
            display: false
          },
          //配置图的布局  上下左右距离
          layout: {
            padding: {
              // left: 50,
              // right: 0,
              top: 20,
              bottom: 20
            }
          },
          //图例
          legend: {
            position: "bottom",
            labels: {
              boxWidth: 25,
              fontColor: "#00FF00" //图例的字体的颜色
            }
          },
          //配置刻度轴相关的颜色
          scale: {
            // Hides the scale
            display: true,
            ticks: {
              //刻度轴上字体的颜色
              fontColor: "#DC143C",
              backdropColor: "#000000",     //刻度轴标签的背景色
            },
            pointLabels: {    //外边一圈字体的颜色
              fontColor: "blue"
            },
            angleLines: {
              //角度线的配置
              color: "#DC143C"
            },
            gridLines: {
              //雷达图外圈轴的颜色  一圈一圈的轴
              color: "#DC143C"
            }
          },
          elements: {
            line: {
              tension: 0,
              borderWidth: 3  //线的粗细
            }
          }
        }
      });
      this.isShowLoding = false;
    }
  }
};
</script>
<style rel="stylesheet/scss" lang="scss">
@import "../../../styles/myBase.scss";
</style>

补充一下,最近遇到的坑,在火狐浏览器中由于渲染机制的原因,chart.js的配置项在火狐中跟其他浏览器表现得不一样,一下为例子:

刻度的背景色设置为黑色,在火狐中表现得为灰白色,这就很坑,最后采用将背景色修改为透明色就可以解决,这个坑弄了好久,很坑,还好解决了。

       ticks: {
              //刻度轴上字体的颜色
              fontColor: "#DC143C",
              backdropColor: "#000000",     //刻度轴标签的背景色
              backdropColor: "rgba(0,0,0,0)",   //解决方案     
            },

结束语

小编真的是一个一个试出来的。心累,现在贴出来,好好记录一下,希望可以帮助到简友们,有不足的地方,希望多多提意见。

上一篇 下一篇

猜你喜欢

热点阅读