• echarts南丁格尔图设置最小半径


     放大数据再还原之前的值----->最大值的0.5倍

     

     const other = [

          { name: 'rose1', value: 0, color: '#5573e1' },

          { name: 'rose2', value: 20, color: '#7fd160' },

        ];

     

    export const otherPie = {

      option: {

        grid: {

          top: '8%',

          left: '2%',

          right: '2%',

          bottom: '3%',

          containLabel: true,

        },

        legend: {

          show: false,

        },

        tooltip: {

          trigger: 'item',

          // formatter: '{b}:
    {c}({d}%)',

        },

        series: [

          {

            type: 'pie',

            roseType: 'area',

            radius: ['15rem', '70rem'],

            center: ['50%', '55%'],

            avoidLabelOverlap: false,

            startAngle: -90, //起始角度

            label: {

              show: true,

              overflow: 'none',

              width: 50,

              align: 'left',

              // margin: '50%',

              fontSize: '16px',

              margin: 0,

              color: '#fff',

              // color: 'auto',

              rich: {

                a: {

                  fontSize: '13px',

                  padding: [

                    0, // 上

                    0, // 右

                    5, // 下

                    0, // 左

                  ],

                },

                b: {

                  fontSize: '16px',

                },

              },

            },

            labelLine: {

              normal: {

                show: false,

                length2: 20, //第一条线

                length: 10, //第二条线

                lineStyle: {

                  width: 1, // 线条的宽度

                  // color: '#000', //线的颜色设置, 如没有设置颜色则线条的颜色跟随饼状图的颜色

                },

              },

            },

            data: [],

          },

        ],

      },

    };

    import { otherPie} from './config';

    [otherData, setOtherData] = useState(otherPie);

    为零时显示

    1. //饼图值放大
    2. let pieData = other;
    3. let showData = [];
    4. let sum = 0,
    5. max = 0;
    6. pieData.forEach((item) => {
    7. sum += item.value;
    8. if (item.value >= max) max = item.value;
    9. });
    10. // 放大规则
    11. let number = Math.round(max * 0.5);
    12. showData = pieData.map((item) => {
    13. return {
    14. // value: item.value !== 0 ? number + item.value : item.value,
    15. value: number + item.value,
    16. name: item.name,
    17. itemStyle: item.itemStyle,
    18. };
    19. });
    20. const otherResult = _.cloneDeep(otherData);
    21. otherResult.option.series[0].data = showData;
    22. otherResult.option.tooltip.formatter = (param) => {
    23. /* let text = '';
    24. if (param.value === 0) {
    25. text = param.name + '
      '
      + param.value;
    26. } else {
    27. text = param.name + '
      '
      + (param.value - number);
    28. } */
    29. let text = param.name + '
      '
      + (param.value - number);
    30. return text;
    31. };
    32. otherResult.option.series[0].label.formatter = (v) => {
    33. /* let text = '';
    34. if (v.data.value === 0) {
    35. text = '{a|' + v.data.name + '}' + '\n' + '{b|' + v.data.value + '}';
    36. } else {
    37. text = '{a|' + v.data.name + '}' + '\n' + '{b|' + (v.data.value - number) + '}';
    38. } */
    39. let text = '{a|' + v.data.name + '}' + '\n' + '{b|' + (v.data.value - number) + '}';
    40. return text;
    41. };
    42. setOtherData({ ...otherResult });

     

     

    为零时不显示 

    1. //饼图值放大
    2. let pieData = other;
    3. let showData = [];
    4. let sum = 0,
    5. max = 0;
    6. pieData.forEach((item) => {
    7. sum += item.value;
    8. if (item.value >= max) max = item.value;
    9. });
    10. // 放大规则
    11. let number = Math.round(max * 0.5);
    12. showData = pieData.map((item) => {
    13. return {
    14. value: item.value !== 0 ? number + item.value : item.value,
    15. name: item.name,
    16. itemStyle: item.itemStyle,
    17. };
    18. });
    19. const otherResult = _.cloneDeep(otherData);
    20. otherResult.option.series[0].data = showData;
    21. otherResult.option.tooltip.formatter = (param) => {
    22. let text = '';
    23. if (param.value === 0) {
    24. text = param.name + '
      '
      + param.value;
    25. } else {
    26. text = param.name + '
      '
      + (param.value - number);
    27. }
    28. return text;
    29. };
    30. otherResult.option.series[0].label.formatter = (v) => {
    31. let text = '';
    32. if (v.data.value === 0) {
    33. text = '{a|' + v.data.name + '}' + '\n' + '{b|' + v.data.value + '}';
    34. } else {
    35. text = '{a|' + v.data.name + '}' + '\n' + '{b|' + (v.data.value - number) + '}';
    36. }
    37. return text;
    38. };
    39. setOtherData({ ...otherResult });

     

     

  • 相关阅读:
    SpringCloudStreamkafka接收jsonarray字符串失败
    APP上架需要的准备和流程
    (附源码)ssm教材管理系统 毕业设计 011229
    实时决策的六个用例 - 从诈骗预防到分析,了解全球企业如何利用Volt Active Data平台推动数字化转型。
    Nextcloud fpm 版在 Dokcer 下安装踩坑
    ADSP-21489的图形化编程详解(7:延时、增益、分频、反馈、响度)
    【入门】求n个数中出现次数最多的数
    C# winfrom窗体最小化任务栏托盘
    c#中webservice的调用
    第六年到第十年是分水岭
  • 原文地址:https://blog.csdn.net/qq_52685664/article/details/127755370