jQuery Highcharts双甜甜圈图(甜甜圈内的甜甜圈)

时间:2014-11-18 20:42:03

标签: jquery highcharts donut-chart

我一直在努力使用highcharts复制此图表设计。

Finished Chart

我一直在玩jsfiddle试图获得理想的结果,但问题在于我无法设法获得百分比未被填充的白色区域,并且可以'得到条之间的间隙。

甚至可以使用highcharts吗?

1 个答案:

答案 0 :(得分:8)

No, it's perfectly possible. It's just bloody difficult。但是,嘿,为什么不呢?

High Charts的问题在于,您无法以特定角度旋转或定位图表。

因此,为了让您创建所提到的效果,我们必须为每个新数据项创建一个单独的图表。

当然,您不想对所有这些进行硬编码,因此我们需要使用for循环生成代码,同时考虑数据条目的起点和终点,甜甜圈的相对大小(整体尺寸和内部尺寸),外甜甜圈之间的间距,实际值与比例的转换等等。我将为您提供详细信息。

经过一些试验和错误后,我得到了以下结果:

enter image description here

enter image description here

现在我已经为你准备了一个jsFiddle,所以你可以根据自己的喜好调整设置并得到你想要的结果。最重要的参数是:

// Specify all properties here:
var MIN = 0;                       // Specify minimum value (beginning of range) 
var MAX = 100;                     // Specify maximum value (ending of range)
var VALUES = [50, 30, 40, 95, 35]; // Specify the values
var VALUES_WHITE = [20, 20, 20, 20, 20]; // Values for the white donut (5 x 100/5)
var COLORS = ['#1FFFF0', '#FFCD05', '#68EB05', '#EB13EB', '#A7EB09']; // Colors
var CATEGORIES = ['Activity', 'Weight', 'Sleep', 'Health', 'Diet'];   // Categories
var BORDERWIDTH_CHART_1 = 20;       // The border width for the white donut chart
var BORDER_COLOR = 'rgba(96, 72, 193, 1)';

然后将在代码中使用这些参数来确定我上面提到的所有变量。例如。我现在为这些值创建了最小0和最多100。因此,var VALUES = [50, 30, 40, 95, 35];中的值表示图表中的百分比(0-100比例)。

现在,我构建了5个不同类别的图表。如果你想要更多(或更少),你可以简单地相应改变属性,它(应该)工作。我还没有测试过。无论如何,您可以根据自己的喜好改进图表:将百分比添加到标签,改善颜色等。

只有一个限制BORDER_COLOR必须与图表背景颜色的颜色相同。在我创建的jsFiddle中,这是文档的body(参见jsFiddle中右上角的CSS)。

我希望你喜欢它:)。

Take me to the DEMO already!