有没有人能告诉我下面哪一种是可能的?
-1-我想在Flot中创建散点图,并相信通过"points“可以做到这一点。图表中的每个点都需要有自己的标签始终出现在图表中--也就是说,不仅仅是在悬停/鼠标悬停期间。我想这是很容易做到的吧?
有没有办法让每个数据点都有“两个”标签?换句话说,假设我想要绘制美国的城市和犯罪率的年复一年变化。我能有像“波士顿+5.3%”和“圣地亚哥-7.1%”这样的点数标签吗?(请记住,第二个值(犯罪率的变化)不是这两个轴的一部分。)
-3-如果上述情况可行,标签的第二部分(犯罪率的变化)是否可以根据该值进行颜色编码?例如,正犯罪率显示为红色,负犯罪率显示为绿色?
点的标签可以用作超链接吗?
-鼠标停留在这些点上时出现的悬停弹出窗口,是否能够包含比轴中包含的数据更多的数据?例如,如果我们想在工具提示中包含几个数据点,以便为用户提供更多信息,这是可能的吗?
如果您觉得有比flot更好的解决方案,也可以兼容IE8,请让我知道。
非常感谢你的帮助!
发布于 2013-04-14 04:10:06
Flot的默认选项不支持您要查找的内容。但是,该库确实提供了hooks,您可以使用它来扩展其基本功能。
您可以在draw或(更好) div钩子上注册一个函数,该钩子迭代您的数据并创建绝对定位的drawSeries元素作为每个点的标签。其他的一切-多个标签,颜色编码,超链接,等等,都是你把什么放到这些div中的问题。
发布于 2013-04-14 23:25:03
基于@DNS的想法,我做了一个简单的例子。在本例中,您将看到我将“标签”信息直接包含到数据数组中。如果存在此信息,代码将在带有标签的点旁边添加div (这是一个超链接)。我还没有把你愿望清单上的所有东西都编码,但希望这能让你继续下去。
小提琴here。
$(function () {
function divByPointHook(plot, canvascontext, series){
$.each(series.data, function(){
if (this.length == 3){
var divStr = '<div style="border:1px solid black; position:absolute; ';
var pos = plot.p2c({'x':this[0],'y':this[1]});
divStr += 'left:' + pos.left + 'px;';
divStr += 'top:' + pos.top + 'px; ">'
divStr += '<a href="#">'+this[2]+'</a>' + '</div>';
$('#placeholder').append(divStr);
}
});
};
var d1 = [[0,1,"one"],[3,8,"two"],[5,4,],[2,10],[1.2,9],[9,2],[46,41],
[22,14],[20,12,"three"],[20,25],[7,5],[18,11],[31,20],[50,40,"four"],[24,36],
[20,42],[33,41],[51,39],[11,28,"five"],[32,16],[38,40],[35,22],[41,30],
[21,18]];
$.plot($("#placeholder"), [{
data: d1,
points: {
radius: 3,
show: true,
fill: true
}}],
{ hooks: { drawSeries: [divByPointHook] } }
);
});https://stackoverflow.com/questions/15986946
复制相似问题