Javascript线图到条形图

时间:2014-02-07 22:10:31

标签: javascript graph charts d3.js graphael

在我在大学的一个项目中,我使用gRaphael创建了以下线图,但我想使用 任何 库将其更改为条形图,除了谷歌图表。< / p>

我尝试用gRaphael做到这一点,但gRaphel在其网站上的所有条形图示例都没有轴!!!这很奇怪。

我需要做的是显示完全相同的东西,但使用线图而不是条形图。我没想到会那么难。

我也看到了d3js库,看起来非常好,但是我不知道如何在那里转换这些代码,因为当用户盘旋在一个柱上时,应该能够看到它的价值。我没有在d3js barcharts找到这个悬停功能。

一般来说,这个折线图的作用是显示x轴的日期和y轴的值。由于gRaphael不接受日期作为值,我所做的不是日期,而是设置1,2,3等,以便graphael创建图表,之后我更改x轴上的标签以显示真实日期。此外,当用户悬停在一个点上时应该能够看到它的值。

因此显示轴,带有日期和悬停的轴就是我想要的潜在图表。

任何人都可以给我任何建议,或者帮我在graphael条形图或任何其他免费图表库(如d3js)上这样做吗?

<script>
        window.onload = function () {
            var r = Raphael("holder"),
                txtattr = { font: "20px sans-serif" };

            var lines = r.linechart(80, 30, 600, 400,[1,2,3,4,5],[1.34,3.43,2.52,2.63,3.12], {type:"soft", axisxstep : 13,nostroke: false, axis: "0 0 1 1", symbol: "circle", smooth: false }).hoverColumn(function () {
                this.tags = r.set();
                for (var i = 0, ii = this.y.length; i < ii; i++) {
                    this.tags.push(r.tag(this.x, this.y[i], Number(this.values[i]).toPrecision(5), 160, 10).insertBefore(this).attr([{ fill: "#fff" }, { fill: this.symbols[i].attr("fill") }]));
                }
            }, function () {
                this.tags && this.tags.remove();
            });
            var date = new Date(1356998400000);
            var someDate = new Date(date);

            //For the x axis
            $.each(lines.axis[0].text.items , function ( index, label ) {
                //Has all the initial x values we got from the beginning as a date
                //We get the corresponding date from the value x
                //i.e. for value 3 we get 3/6/2014
                //This function replaces the values we had (numbers 1,2,3...) with the corresponding date
                someDate = new Date(date);
                someDate.setDate(date.getDate() );
                var jan312009 = new Date(2009, 1-1, 31);
                var newDate = new Date(new Date(someDate).setMonth(jan312009.getMonth()+Number(label.attr("text"))));
                var dd = newDate.getDate();
                var mm = newDate.getMonth() + 1;
                var y = newDate.getFullYear();
                var someFormattedDate = mm + '-'+ y;
                label.attr({'text': someFormattedDate});
            });
            lines.symbols.attr({ r: 6 });
        };
    </script>

非常感谢

0 个答案:

没有答案