【问题标题】:Change width and height of chart (Echarts library)更改图表的宽度和高度(Echarts 库)
【发布时间】:2019-11-05 13:33:32
【问题描述】:

我正在使用 Echarts 进行数据可视化,文档对我来说不是很清楚;(

我需要的基本上是改变图表的宽度和高度。我试图改变饼图 div 的高度,但结果只有 div 高度被改变,而不改变图表尺寸。如果有人知道解决方案,我将不胜感激。

 <div class="card grid-stack-item-content cd-example" id="dashboard-header">
                            <div class="card-header container-fluid">
                                <div class="row dashboard-row">
                                    <div class="col-3 dashboard-icon-div text-center">
                                        <h1 class="dashboard-h1"><i class="fa fa-tags dashboard-logo"></i></h1>
                                    </div>
                                    <div class="col-5"> 
                                        <h4 class="card-title dashboard-card-title">{{trans('app.icd10_codes')}}</h4>
                                        <h6 class="card-subtitle text-muted">    
                                              @if (count($binnedIcds['targetIcds']['codes']) > 0)
                                                    <span class="info-box-number">
                                                      {{count($binnedIcds['targetIcds']['codes'])}}
                                                      {{trans('app.skin_disease_groups')}}
                                                   </span>
                                             @endif
                                        </h6>
                                    </div>
                                </div> 
                            </div>
                            <div class="card-body">
                               <div class="row">
                                 <div class="col-lg-12 col-md-12 col-sm-12">
                                     <div id="pie-chart" style="width:100%; min-height: 500px;"></div>
                                 </div>
                                </div>      
                            </div>
</div>

NewIcdChart.js

class NewIcdChart
{
  constructor(ctx, targetsLabels, othersLabel, undefLabel, targetsTooltips, othersTooltip,
    undefTooltip, nTargets, nOthers, nTotal)
  {

    this.othersColor = '#888888';
    this.undefColor = '#cccccc';

    var labels = {
      targetsLabels,
      othersLabel,
      undefLabel
    };

    var tooltips = {
      targetsTooltips,
      othersTooltip,
      undefTooltip,
    };

    var nTargetImages = nTargets.reduce((a,b) => a + b, 0);
    var nUndef = nTotal - nTargetImages - nOthers;
    var counts = {
      nTargets,
      nOthers,
      nTotal,
      nUndef, 
    };

    this.chart;
    this.hasOthers = false;
    this.hasUndef = false;
    this.drawChart(ctx, labels, tooltips, counts);
  }




drawChart(ctx, labels, tooltips, counts){



var otherValue=counts.nOthers;

var otherLabel=labels.othersLabel;

var undefinedValue=counts.nUndef;

var undefinedLabel=labels.undefLabel;

var targetValues=counts.nTargets;

var targetLabels=labels.targetsLabels;

var finalChartValue=[];

for(var i=0; i<targetValues.length; i++){



for(var i=0; i<targetLabels.length; i++){
    var obj = {"value": targetValues[i], "name": targetLabels[i]};
    finalChartValue.push(obj);
}

}

var otherObject={
    value: otherValue,
    name : otherLabel
};

var undefinedObject={
    value: undefinedValue,
    name : undefinedLabel
};


finalChartValue.unshift(otherObject, undefinedObject);



var finalChartLables=[];
 finalChartValue.forEach(function(res) {
        finalChartLables.push(res.name);
});



function sum(arrayData, key){
   return arrayData.reduce((a,b) => {
  return {value : a.value + b.value}
})
}
var tempSumObjectElements=sum(finalChartValue);
var sumObjectElements=tempSumObjectElements.value;

var finalPercentage=[];

 finalChartValue.forEach(function(res) {
        var result=res.value/sumObjectElements *100;

          var percentage = result.toFixed(2);
          finalPercentage.push(percentage);

});



// specify chart configuration item and data
var option = {

    tooltip: {
        trigger: 'item',
        formatter: "{a} <br/>{b} : {c} ({d}%)",
    },

    legend: {
           x : 'center',
        y : 'bottom',
        formatter: function(name) { 
          var data = this.getSeries()[0].data; 

          var totalValue = data.reduce((acc, item) => { 
            acc += item.value;
            return acc;
          }, 0)
          var targetValue;  
          data.map(item => {
            if (item.name == name) {
              targetValue = item.value; 
            }
          })
          var p = (targetValue / totalValue * 100).toFixed(2); 
          return name + ' ' + p + '%';
        },
        data:finalChartLables
    },
    toolbox: {
        show: true,
        feature: {

            dataView: { show: true, readOnly: false },
            magicType: {
                show: true,
                type: ['pie']
            },
            restore: { show: true },
            saveAsImage: { show: true }
        }
    },
    color: ["#f62d51", "#dddddd", "#ffbc34", "#7460ee", "#009efb", "#2f3d4a", "#90a4ae", "#55ce63"],
    calculable: true,

    series: [{
            name: 'ICD',
            type: 'pie',
            radius: [20, 110],
            center : ['50%', '50%'],
            roseType: 'radius',
            itemStyle: {
                normal: {
                    label: {
                        show: false,
                        formatter: "{b} :  \n ({d}%)",
                        fontWeight: 100
                    },
                    labelLine: {
                        show: false,
                        formatter: "{b} :   \n ({d}%)",
                        fontWeight: 100
                    }

                },
                emphasis: {
                    label: {
                        show: true,
                        formatter: "{b} :  \n ({d}%)",
                        fontWeight: 100

                    },
                    labelLine: {
                        show: true,
                        formatter: "{b} :  \n ({d}%)",
                        fontWeight: 100

                    }
                }
            },
            data: finalChartValue
        },


    ]
};



// use configuration item and data specified to show chart
ctx.setOption(option, true), $(function() {
    function resize() {
        setTimeout(function() {
            ctx.resize()
        }, 100)
    }
    $(window).on("resize", resize), $(".sidebartoggler").on("click", resize)
});


}

}

【问题讨论】:

    标签: javascript jquery echarts


    【解决方案1】:

    找到了解决办法,基本上是用radius命令来配置图

     radius: [20, 180],
    

    【讨论】:

      【解决方案2】:

      试试你的选项变量;

      responsive: true,
      maintainAspectRatio: false
      

      【讨论】:

      • 感谢您的回答,但仍然没有,我的意思是再次更改“饼图”div的高度和宽度,但图表具有相同的尺寸
      【解决方案3】:

      此处的文档:https://echarts.apache.org/en/option.html#series-pie.emphasis

      在你的系列中

            ...
            emphasis: {
                      scale: true, <----- 
                      scaleSize: 20,  <-----
                      label: {
                          show: true,
                          fontSize: '30',
                          fontWeight: 'bold'
                      },
                      itemStyle: {
                          // Color in emphasis state.
                          color: 'blue',
                       },
                  },
          ...
         
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-26
        • 1970-01-01
        • 2019-08-11
        • 1970-01-01
        • 2021-02-01
        • 2020-01-23
        • 2016-01-01
        相关资源
        最近更新 更多