3

我使用 highchart 饼图来创建甜甜圈图,但希望图例图标成为圆圈任何想法?下面是模型和实际的网络版本。谢谢...

在此处输入图像描述

4

4 回答 4

6

在最新版本的 HighchartssymbolWidth: width中,您可以使用.symbolRadius: width/2legend: {}

请参阅此 JSFiddle 演示:http: //jsfiddle.net/Wzs9L/

于 2014-07-29T15:35:26.953 回答
5

我根据饼图准备了解决方案。图例在数据点上生成,自动作为 HTML 列表。然后所有元素从系列中获取颜色,并使用 CSS3 生成圆形对象(border-radius)。因此,您需要添加点击事件。

http://jsfiddle.net/N3KAC/1/

 $legend = $('#customLegend');

    $.each(chart.series[0].data, function (j, data) {

        $legend.append('<div class="item"><div class="symbol" style="background-color:'+data.color+'"></div><div class="serieName" id="">' + data.name + '</div></div>');

    });

    $('#customLegend .item').click(function(){
        var inx = $(this).index(),
            point = chart.series[0].data[inx];

        if(point.visible)
            point.setVisible(false);
        else
            point.setVisible(true);
    });  

CSS:

    .symbol {
    width:20px;
    height:20px;
    margin-right:20px;
    float:left;
    -webkit-border-radius: 10px;
    border-radius: 10px;
}
.serieName {
    float:left;
    cursor:pointer;
}

.item {
    height:40px;
    clear:both;
}
于 2013-06-11T15:06:26.957 回答
1

实现此目的的另一种方法是使用 CSS 覆盖样式。只需将下面的类添加到您的样式表中:

.highcharts-legend-item rect {
    width: 12px;
    height: 12px; /* height = width */
    rx: 50%;
    ry: 50%;
}

这将覆盖 SVG Rectangle 元素的默认样式。

于 2016-06-12T14:33:13.757 回答
0

有一个很容易解决的方法。只需在 chartoptions 中设置以下属性:

chartoptions.legend.symbolHeight = 12;
chartoptions.legend.symbolWidth = 12;
chartoptions.legend.symbolRadius = 6;

如需进一步参考,请查看highcharts api 文档

签出这个jsFiddle

于 2016-04-29T09:38:39.497 回答