首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jQuery flot中给条形图添加堆叠效果

如何在jQuery flot中给条形图添加堆叠效果
EN

Stack Overflow用户
提问于 2012-03-09 11:53:56
回答 2查看 2.2K关注 0票数 2

我对jquery flot有一个问题。

首先,我得到了下面的图表http://design2u.me/blog/example/bar/index.html

代码如下:

代码语言:javascript
复制
<script type="text/javascript">
$(function () {
    // generate a dataset
        var d1 = []; d1.push([3,100]);
        var d2 = []; d2.push([3,66]);
        var d3 = []; d3.push([3,33]);

        //announce a dataset
        var data = [{ data: d1, color: "#f21d1d" },{ data: d2, color: "#1d61f2" },{ data: d3, color: "#5bc91a" }];      
        var placeholder = $("#placeholder");

        // plot it
        var plot = $.plot(placeholder, data, {
                stack:true,
                bars: { show: true, barWidth: 4, fill: 0.5 },
                xaxis: { ticks: [], autoscaleMargin: 0.02 , min: 0, max: 10  },
                yaxis: { min: 0, max: 120 },
        });
});
</script>

但是,我需要堆叠不同的部分,并且我已经添加了属性

代码语言:javascript
复制
stack:true,

通过尝试和出错,我发现如果我按如下方式更改plot函数:

代码语言:javascript
复制
var plot = $.plot(placeholder, data, {
            series: {
                stack:true,
                bars: { show: true, barWidth: 4, fill: 0.5 },
                xaxis: { ticks: [], autoscaleMargin: 0.02 , min: 0, max: 10  },
                yaxis: { min: 0, max: 120 },
            }
        });

然后我得到了以下结果:http://design2u.me/blog/example/bar/index2.html

钢筋已经成功堆叠,但它变得太宽了。

我希望酒吧只在中心,我怎么才能解决这个问题?非常感谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-10 00:36:52

好吧,我想这可能是flot的一个缺陷。如果每个系列有多个数据点,我认为它会工作得更好。实际上,我唯一能想到的办法就是添加一条“虚拟”线来强制x轴保持正确的宽度,同时让条形保持相同的宽度:

首先,给你的数据添加一个新的数据集:

代码语言:javascript
复制
{
data: [[0, 0], [10, 0]],
bars: {
    show: false
},
lines: {
    show: false
}}

[0,0]是x轴的最小值,[10,0]是y轴的最小值。

然后,我稍微更改了绘图选项,因此$.plot调用如下所示:

代码语言:javascript
复制
var plot = $.plot(placeholder, data, {
    series: {
        stack:true,
        bars: {
            show: true,
            barWidth: 1,
            fill: 0.5,
            align: 'center'
        }
    }
});​

产生了这个工作示例:http://jsfiddle.net/ryleyb/92v2h/

票数 1
EN

Stack Overflow用户

发布于 2012-03-11 23:19:25

我找到了一个简单的方法来解决我的问题。

通过修复以下代码:

代码语言:javascript
复制
//announce a dataset
        var data = [{ data: d1, color: "#f21d1d" },{ data: d2, color: "#1d61f2" },{ data: d3, color: "#5bc91a" }];  

转到

代码语言:javascript
复制
//announce a dataset
        var data = [{ stack: true, data: d1, color: "#f21d1d" },{ stack: true, data: d2, color: "#1d61f2" },{ stack: true, data: d3, color: "#5bc91a" }];

问题就解决了。在此工作示例中的结果:http://jsfiddle.net/divaka/q8srK/

感谢您的回复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9628707

复制
相关文章

相似问题

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