我一直在努力使用highcharts复制此图表设计。
我一直在玩jsfiddle试图获得理想的结果,但问题在于我无法设法获得百分比未被填充的白色区域,并且可以'得到条之间的间隙。
甚至可以使用highcharts吗?
答案 0 :(得分:8)
No, it's perfectly possible. It's just bloody difficult。但是,嘿,为什么不呢?
High Charts的问题在于,您无法以特定角度旋转或定位图表。
因此,为了让您创建所提到的效果,我们必须为每个新数据项创建一个单独的图表。
当然,您不想对所有这些进行硬编码,因此我们需要使用for
循环生成代码,同时考虑数据条目的起点和终点,甜甜圈的相对大小(整体尺寸和内部尺寸),外甜甜圈之间的间距,实际值与比例的转换等等。我将为您提供详细信息。
经过一些试验和错误后,我得到了以下结果:
现在我已经为你准备了一个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)。
我希望你喜欢它:)。