我正在使用JQuery的Flot图表库中的气泡插件。我拥有的数据是动态的,可以在X、Y和Z值范围内变化很大。我遇到的主要问题是气泡的大小。如果X和Y值彼此有点接近,但Z值大得多,那么气泡就会占据图表。设置X和Y轴的最小和最大轴有一定帮助,但不是在每种情况下都是如此。我试图寻找其他选项和设置,但没有找到任何有用的东西。有什么方法可以控制气泡的大小吗?
例如,Flex用于自动创建相对于屏幕和轴的气泡大小,其中Flot似乎总是将气泡大小设置为与X和Y值相同的比例。我只提供了一个数据样本。我想继续使用Flot作为插件,因为我的应用程序中有许多其他图表类型,并且希望使用相同的代码库。但是,如果有另一个插件会更好,我是开放的想法。谢谢!
https://jsfiddle.net/llamajuana/zd4hd7rb/
var d1 = [[30,339,139856], [30, 445,239823], [30,1506,127331]];
var options = {
series: {
//color: '#CCC',
color: function(x, y, value) {
var red = 55 + value * 10;
return 'rgba('+red+',50,50,1)';
},
bubbles: {
active: true,
show: true,
fill: true,
linewidth: 0,
bubblelabel: {
show: true
},
highlight: {
show: true,
opacity: 0.3
}
}
},
grid:{
hoverable: true,
clickable: true
},
tooltip: {
show: true,
content: "x: %x | y: %y | value: %ct"
}
};
var p4 = $.plot( $("#plot"), [d1], options );发布于 2015-10-16 17:15:08
您可以尝试对数缩放。
对于x和y轴,您可以使用transform property in the axis options或在绘制绘图之前更改数据来完成此操作。
对于气泡,您必须手动完成此操作,方法是在绘制之前更改数据或替换气泡插件的drawbubble函数(请参阅User draw example here)。
有关完整的示例,请参阅此fiddle。小提琴的变化:
1)如果你愿意,你可以直接在气泡插件中修改它。
// index of bubbles plugin is dynamic, you better search for it
var defaultBubbles = $.plot.plugins[1].options.series.bubbles.drawbubble;
var logBubbles = function(ctx, serie, x, y, v, r, c, overlay){
defaultBubbles(ctx, serie, x, y, v, Math.log(r), c, overlay);
}2)在系列选项中:
xaxis: {
transform: function (v) {
return Math.log(v);
},
inverseTransform: function (v) {
return Math.exp(v);
}
},
yaxis: {
transform: function (v) {
return Math.log(v);
},
inverseTransform: function (v) {
return Math.exp(v);
}
},3)在气泡插件的radiusAtPoint()函数中:
// added Math.log function here too
return parseInt(series.yaxis.scale * Math.log(series.data[radius_index][2]) / 2, 0);https://stackoverflow.com/questions/33155896
复制相似问题