【问题标题】:URL for each box in stacked bar graph堆叠条形图中每个框的 URL
【发布时间】:2012-04-25 10:21:44
【问题描述】:

我想创建一个堆叠条形图,如下面的 url 所示


(来源:jpowered.com

我想为每个红色、紫色和蓝色框制作超链接。该图表可以使用 jfree 图表,但我不知道如何将每个单独的条形设为 URL,以便单击它可以刷新这页纸。 用jfree chart可以吗?

在这种情况下,Jquery 绘图是否有助于启用每个框 url?请提出建议。

【问题讨论】:

    标签: graph jfreechart jqplot stacked bar-chart


    【解决方案1】:

    使用,您可以将CategoryURLGenerator 应用于绘图,使用两种实现中更适合您需要的任何一种。该方法为相关的PieURLGenerator 概述了hereChartFactory.createStackedBarChart() 使用 StackedBarRenderer 并允许 PlotOrientation.HORIZONTAL

    附录:要为单个项目生成 URL,您可以检查在 ChartMouseListener 中返回的 ChartEntity,如 here 所示。

    【讨论】:

    • +1 阅读您的答案,看起来在 jfreechart 中这种事情已经被巧妙地解决了。谢谢,我之前不知道。一切顺利,很高兴见到你。 :)
    • 很抱歉之前忽略了你问题的本质;以上。
    【解决方案2】:

    我知道你可以在 jqPlot 中轻松实现这样的目标。 创建绘图后,您需要记住的唯一想法是将函数绑定到 jqplotDataClick 事件。在您的函数中,您需要将点击映射到 URL 结构。我在一个示例示例中对此进行了介绍,其中只有第一个系列的栏将您带到一些网站。示例在 jsfiddle --- it could be found here.

    实际上全部归结为这段代码:

      var urls = ["www.yahoo.com", "www.google.com", "www.java.com", "www.w3schools.com/js/js_obj_date.asp"];
      $('#chart').bind('jqplotDataClick', function (ev, seriesIndex, pointIndex, data) {
          if(seriesIndex === 0){
              var url = urls[pointIndex];
              window.open("http://"+url);
          }
      });
    

    编辑

    我不知道一种简单的方法,即不涉及更改jqPlot 的脚本,通过突出显示其背景来识别单击的栏。虽然我想出了一种方法来通过着色条上的点标签的背景来获得类似的效果,但代码也需要在 jqplotDataClicked 中,类似于:

    var prevClicked;
    var prevBackgroundColor;
    $('#chart').bind('jqplotDataClick', function (ev, seriesIndex, pointIndex, data) {
        var str = ".jqplot-point-label.jqplot-series-"+seriesIndex+".jqplot-point-"+pointIndex;
        $(str).each(function(){
            if(prevClicked)
                $(prevClicked).css('background-color', prevBackgroundColor);
            prevClicked = this;
            prevBackgroundColor = $(prevClicked).css('background-color');
            $(prevClicked).css('background-color', 'red');
        });
    });
    

    您只需使用jQuery 找到点击的点标签并应用您的样式,例如更改背景颜色,记住以前的标签,以便您可以在单击另一个栏时将其颜色删除到以前的状态。首先我尝试使用addClass/removeClass 函数,但它并没有改变标签的样式,因此我不得不改用css 函数。

    【讨论】:

    • 我以前不熟悉这个jqPlot。它看起来是浏览器中交互式绘图的不错选择。 jfreechartorg.jfree.chart.imagemap 支持。从今天早些时候 +1。
    • 是的,jqPlot 在您需要浏览器中的图表时是一个不错的选择。如果您还将一些自己的 jquery 脚本混入其中,您可以有效地从该库中获得所有您想要的图表。认为这个库不像商业版本那样精致,但是这个库是免费,并且它有一个非常好的(对于 javascript 标准:))文档。
    • 嗨 Boro,我可以制作 jqplot char。如何使用单独的颜色突出显示单击的栏以识别它已被单击。它在鼠标悬停时显示悬停颜色。如何显示不同的颜色在鼠标单击时。我想打开一个新页面并在页面上显示单击的条形数据以及图表。因此单击部分的数据显示为突出显示。
    • 具有可点击属性的 jfree 图表是否可以与 struts 框架一起使用。我看到 jfree 图表可点击属性在 applet 中作为摆动。它可以与 struts 页面或简单的 html 页面集成吗?
    • 您好 jboss 问题,关于您的第一个问题,我已添加 EDIT 以显示我对这个问题的看法。但是,当涉及到您的其他评论时,您最好向@trashgod 询问,因为我认为他对jfreechart 的体验比我的要好。我只在我的swing 应用程序中使用它来展示我的博士研究成果。我永远不会打算在浏览器中使用它,因为我想这就是你所追求的,对吧?对我而言,jfreechart 仅用于在本地 Java 应用程序中创建图表。
    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    相关资源
    最近更新 更多