【发布时间】:2014-01-18 17:11:05
【问题描述】:
我正在尝试创建如下所示的 Google 图表:
基本上,我只想在一张图表上表示最大值、最小值和平均值,但我似乎不知道如何做到这一点。我知道可以在旧的基于 URL 的图表中使用标记,但它们已被弃用,而且新 API 似乎还不支持标记。
我尝试使用烛台,但我让它工作的唯一方法是在中间使用一条细线和一条水平线,因此它看起来像一堆加号,而不是带有线标记的浮动列。我知道我也可以在技术上将柱形图与阶梯式面积图堆叠在一起,但是这条线在所有条目中都是连续的,这是我不想要的。
谢谢。
编辑:使用 jmac 的方法和间隔,我想出了这个:
function drawVisualization() {
// Create and populate the data table.
var data = new google.visualization.DataTable();
data.addColumn('string', 'label');
data.addColumn('number', 'filler');
data.addColumn('number', 'range');
data.addColumn({type:'number', role:'interval'});
data.addRows([
['A', 3, 4, 2],
['B', 2, 5, 4],
['C', 4, 4, 1],
['D', 5, 2, 1],
['E', 1, 8, 4],
]);
// Create and draw the visualization.
var ac = new google.visualization.ColumnChart(document.getElementById('visualization'));
ac.draw(data, {
width: 600,
isStacked: true,
series: [{color:'transparent'},{color:'silver'},{color:'silver'}],
vAxis: {gridlines: {color: 'transparent'}, textPosition: 'none'},
focusTarget: 'category',
intervals: { 'style': 'bars', 'barWidth': 1.3, 'lineWidth': 2 },
});
}
我还没有足够的声望来发布它的样子,但如果你把它贴在这里你可以看到它:https://code.google.com/apis/ajax/playground/?type=visualization#column_chart
此外,由于当您将鼠标悬停在填充区域上时它仍会突出显示填充区域,所以我发现了一个 css hack 来隐藏鼠标悬停时的突出显示:
#chart-div {
svg g g g g rect {
stroke-width:0px;
}
}
【问题讨论】:
-
查看Intervals 文档。这些示例都基于 LineChart,但它们可以与许多不同的图表类型一起使用。
-
感谢您的回复,我尝试使用带有烛台图表的区间,但它们不起作用。如果我使用柱形图,它们会起作用,但是除非我在数据下方添加一个虚拟条目并匹配背景颜色,否则最小值和最大值不会“浮动”。柱形图 hack 仍然显示在图例中,并且该区域在悬停时突出显示,这是我不想要的。
-
您可以通过设置
series.<series index>选项将其从图例中移除并使其消失,使其不会交互:{color: 'transparent', visibleInLegend: false, enableInteractivity: false}。我会用一个例子写一个答案。 -
我想出了一个更好的方法,看答案。