显示标签时,Flot圆环图表消失

时间:2016-05-24 19:14:08

标签: jquery flot pie-chart donut-chart

我创建了一个带有flot的简单圆环图。但是,如果我使用默认设置,则不会显示标签(即使我指定" show:true")。只有当我隐藏图例时,才会显示标签,但图表本身会消失。我错过了什么或者这是flot库中的错误吗?

这是我的代码:

var data = [
  {label: "A", data: 373, color: "red"},
  {label: "B", data: 84, color: "blue"},
  {label: "C", data: 73, color: "green"}    
];

$.plot("#chart", data, {
  series: {
    pie: {
      innerRadius: 0.75,
      show: true,
    }
  },
  label: {
    show: true,
  },
  legend: {
    show: false
  }
});  

JsFiddle

1 个答案:

答案 0 :(得分:2)

查看饼图插件代码,图例可见性控制标签可见性,如果pie.radius设置为auto,则标签可见性又控制图表的半径(如果是.75则为默认值尚未明确设置 - 以下适用的代码。

您碰巧选择innerRadius作为图表的radius,这是插件在此情况下设置为半径的内容。当innerRadius// set labels.show if (options.series.pie.label.show == "auto") { if (options.legend.show) { options.series.pie.label.show = false; } else { options.series.pie.label.show = true; } } // set radius if (options.series.pie.radius == "auto") { if (options.series.pie.label.show) { options.series.pie.radius = 3/4; } else { options.series.pie.radius = 1; } } 相等时,就会出现您正在描述的消失现象。

innerRadius

为什么插件以这种方式编写?我不确定 - 但您可以通过在关闭图例时将.75设置为innerRadius以外的其他内容,或同时指定radius来解决此问题和$(function() { var data = [{ label: "A", data: 373, color: "red" }, { label: "B", data: 84, color: "blue" }, { label: "C", data: 73, color: "green" }]; $.plot("#chart", data, { series: { pie: { innerRadius: 0.5, radius: .75, show: true, } }, label: { show: true, }, legend: { show: false } }); });属性:



<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.pie.min.js"></script>

<div id="chart" style="width: 600px; height: 300px;"></div>
&#13;
var id = $(this).attr('id');    // Id of the current selection
var current = 0;                // Array index of the current item

getTpl()                        // Get and load lightbox template
    .then(getData)              // Get JSON data of the selected item
    .then(getItem)              // Pass JSON data and get the item
    .then(loadItem)
&#13;
&#13;
&#13;