首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flot气泡插件-气泡大小

Flot气泡插件-气泡大小
EN

Stack Overflow用户
提问于 2015-10-16 02:28:43
回答 1查看 436关注 0票数 2

我正在使用JQuery的Flot图表库中的气泡插件。我拥有的数据是动态的,可以在X、Y和Z值范围内变化很大。我遇到的主要问题是气泡的大小。如果X和Y值彼此有点接近,但Z值大得多,那么气泡就会占据图表。设置X和Y轴的最小和最大轴有一定帮助,但不是在每种情况下都是如此。我试图寻找其他选项和设置,但没有找到任何有用的东西。有什么方法可以控制气泡的大小吗?

例如,Flex用于自动创建相对于屏幕和轴的气泡大小,其中Flot似乎总是将气泡大小设置为与X和Y值相同的比例。我只提供了一个数据样本。我想继续使用Flot作为插件,因为我的应用程序中有许多其他图表类型,并且希望使用相同的代码库。但是,如果有另一个插件会更好,我是开放的想法。谢谢!

https://jsfiddle.net/llamajuana/zd4hd7rb/

代码语言:javascript
复制
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 );
EN

回答 1

Stack Overflow用户

发布于 2015-10-16 17:15:08

您可以尝试对数缩放。

对于x和y轴,您可以使用transform property in the axis options或在绘制绘图之前更改数据来完成此操作。

对于气泡,您必须手动完成此操作,方法是在绘制之前更改数据或替换气泡插件的drawbubble函数(请参阅User draw example here)。

有关完整的示例,请参阅此fiddle。小提琴的变化:

1)如果你愿意,你可以直接在气泡插件中修改它。

代码语言:javascript
复制
// 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)在系列选项中:

代码语言:javascript
复制
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()函数中:

代码语言:javascript
复制
    // added Math.log function here too
    return parseInt(series.yaxis.scale * Math.log(series.data[radius_index][2]) / 2, 0);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33155896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档