堆栈条形图缩放后,Flot 返回不正确的 x 值(mm/dd/yy - 日期)

2024-01-26

我想在用户缩放图表并单击特定栏时获得正确的 x 轴标签

当单击 (02/14/14 - xaxis) 上的栏时,警报会显示 (02/19/14 - xaxis) 标签。 当缩放(选择)未触发时,它会返回正确的日期。但在缩放图表并单击栏后,它会填充错误的日期。

我是流程图的新手。请帮我。谢谢。

[<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Flot Stack Zoom Click</title>
    <link href="style.css" rel="stylesheet" type="text/css">
    <link href="plot.css" rel="stylesheet" type="text/css">
    <link href="master.css" rel="stylesheet" type="text/css">
    <!--\[if lte IE 8\]><script language="javascript" type="text/javascript" src="excanvas.min.js"></script><!\[endif\]-->
    <script language="javascript" type="text/javascript" src="jquery.js"></script>
    <script language="javascript" type="text/javascript" src="jquery.flot.js"></script>
    <script language="javascript" type="text/javascript" src="jquery.flot.valuelabels.js"></script>
    <script language="javascript" type="text/javascript" src="jquery.flot.stack.js"></script>
    <script language="javascript" type="text/javascript" src="jquery.flot.time.js"></script>
    <script language="javascript" type="text/javascript" src="jquery.flot.selection.js"></script>
        
    
    <script type="text/javascript">

    $(function() {
    
    var dataset = \[{
        data: \[
            \[1391279400000, -588\],\[1391365800000, -1324\],\[1391452200000, -1525\],\[1391538600000, -588\],\[1391625000000, -1525\],\[1391711400000, -588\],
            \[1391797800000, -1324\],\[1391884200000, -1525\],\[1391970600000, -588\],\[1392057000000, -1234\],\[1392143400000, -588\],\[1392229800000, -1324\],
            \[1392316200000, -1525\],\[1392402600000, -588\],\[1392489000000, -1525\],\[1392575400000, -588\],\[1392661800000, -1324\],\[1392748200000, -1525\],
            \[1392834600000, -588\]
        \],
        color:'#9D538E',
        label: "Out"
    },
    {
        data: \[
            \[1391279400000, 3221\],\[1391365800000, 2496\],\[1391452200000, 1050\],\[1391538600000, 3221\],\[1391625000000, 1050\],\[1391711400000, 3221\],
            \[1391797800000, 2496\],\[1391884200000, 1050\],\[1391970600000, 2221\],\[1392057000000, 1050\],\[1392143400000, 3221\],\[1392229800000, 2496\],
            \[1392316200000, 1050\],\[1392402600000, 3221\],\[1392489000000, 1050\],\[1392575400000, 3221\],\[1392661800000, 2496\],\[1392748200000, 1050\],
            \[1392834600000, 2221\]
        \],
        color:'#702BD7',
        label: "Intake"
    }, {
        data: \[
            \[1391279400000, 1000\],\[1391365800000, -1000\],\[1391452200000, -475\],\[1391538600000, 1000\],\[1391625000000, -475\],\[1391711400000, 1000\],
            \[1391797800000, -1000\],\[1391884200000, -475\],\[1391970600000, 1000\],\[1392057000000, -475\],\[1392143400000, 1000\],\[1392229800000, -1000\],
            \[1392316200000, -475\],\[1392402600000, 1000\],\[1392489000000, -475\],\[1392575400000, 1000\],\[1392661800000, -1000\],\[1392748200000, -475\],
            \[1392834600000, 1000\]
        \],
        color:'#2082F2',
        label: "Net"
    }\];    
    
            var plot = $.plot("#placeholder", dataset, {
                xaxis: {
                        mode: 'time',
                        timeformat: "%m/%d/%y",
                        tickSize: \[1, "day"\], 
                }, 
                series: {
                        bars: {
                            fill: 1,
                            show: true,     
                            barWidth: 100*100*4000,
                        },
                        valueLabels: { 
                            show: true,
                            showAsHtml: true,                   
                        },                  
                }, 
                grid: {
                        hoverable: true,
                        clickable: true,
                        borderWidth: 2,       
                        markings: \[ { yaxis: { from: 0, to: 0 }, color: "#fff" }\],
                        backgroundColor: { colors: \["#000000", "#000000"\] }
                }               
            });
            
            var overview = $.plot("#overview", dataset, {
                xaxis: {
                        mode: 'time',   
                        ticks: \[\]             
                }, 
                yaxis: {
                        ticks: \[\],
                },
                series: {
                        bars: {
                            fill: 1,
                            show: true,                     
                        },              
                }, 
                grid: {
                        markings: \[ { yaxis: { from: 0, to: 0 }, color: "#fff" }\],
                        backgroundColor: { colors: \["#000000", "#000000"\] }
                },
                selection: {
                        mode: "x"
                },
                legend: {show: false}
            }); 
        
                // now connect the two
                $("#placeholder").bind("plotselected", function (event, ranges) {

                        //Reset Chart resolution dropdown
                        $(".chartResolution").val("0");

                               
                        // do the zooming
                        plot = $.plot("#placeholder", dataset, {
                            xaxis: {
                                mode: 'time',       
                                min: ranges.xaxis.from,
                                max: ranges.xaxis.to,
                            }, 
                            series: {
                                bars: {
                                    fill: 1,
                                    show: true,                     
                                    barWidth: 100*100*4000,
                                },
                                valueLabels: { 
                                    show: true,
                                    showAsHtml: true,                   
                                },                  
                            }, 
                            grid: {
                                hoverable: true,
                                clickable: true,
                                borderWidth: 2,       
                                markings: \[ { yaxis: { from: 0, to: 0 }, color: "#fff" }\],
                                backgroundColor: { colors: \["#000000", "#000000"\] }
                            }
                        });

                        
                        // don't fire event on the overview to prevent eternal loop
                        //overview.setSelection(ranges, true);
                        
                });

 

                //bind the plotselected function

                $("#overview").bind("plotselected", function (event, ranges) {          
                                plot.setSelection(ranges);
                });

        $("#placeholder").bind("plotclick", function (event, pos, item) {
            if (item) {
                var tickClicked = item.series.xaxis.ticks\[item.dataIndex+1\].label;         
                alert(tickClicked);
            }
        });
        
    });
    </script>
</head>
<body style="background-color:#222222; color:white;">

    <div id="content">
        <div class="demo-container" style="margin-top:1%;">
            <div id="placeholder" class="demo-placeholder"></div>
            <p class="notifyMessage">Please click and drag and select a range to zoom <a href="#" title="Revert to all data" class="buttonCommon revertToAll">Revert to all data</a></p>
            <div id="overview" class="psycho" style="width:950px;height:150px;"></div>
        </div>

    </div>

</body>
</html>][1]

问题是这行代码:

var tickClicked = item.series.xaxis.ticks[item.dataIndex+1].label; 

当您的绘图未缩放时,每个数据点(条形)有一个刻度。然而,当您缩放时,您最终会在刻度之间出现,因此通过以下方式找到刻度item.dataIndex是行不通的。

我猜您更关心与条相关的数据(而不是真正的刻度线),因此获取条 x 值并将其格式化回日期字符串。

var tickClicked = $.plot.formatDate(new Date(item.datapoint[0]),"%m/%d/%Y");

EDITS

而不是再做一个.plot调用缩放重绘图表(这是我在应用程序中使用 flot 执行此操作的方法):

var opts = plot.getOptions();
opts.xaxes[0].min = ranges.xaxis.from;
opts.xaxes[0].max = ranges.xaxis.to;
opts.yaxes[0].min = ranges.yaxis.from;
opts.yaxes[0].max = ranges.yaxis.to;
plot.setupGrid();
plot.draw();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

堆栈条形图缩放后,Flot 返回不正确的 x 值(mm/dd/yy - 日期) 的相关文章

随机推荐

  • 在 NumPy 数组中搜索序列

    假设我有以下数组 array 2 0 0 1 0 1 0 0 如何获取出现值序列的索引 0 0 因此 这种情况的预期输出将是 1 2 6 7 Edit 1 请注意 0 0 只是一个序列 它可能是 0 0 0 or 4 6 8 9 or 5
  • IE7 CSS 滚动 Div 错误

    我最近遇到了一个仅适用于 IE7 的错误 我想分享一下 因此当我 6 个月后访问此网站以找出同样的问题时 我会将其放在手边 我相信重新创建此错误的最简单方法是在带有声明的 doctype 的页面中使用以下 html 它在 怪异模式 无 do
  • jQuery 从字符串调用函数[重复]

    这个问题在这里已经有答案了 是否可以使用字符串来调用函数 即 我有一个变量var target next 使用这个字符串我想调用jquery方法next 我应该使用target 这有点愚蠢 打电话next 我知道可以使用conditiona
  • 根据条件从另一个微调器填充一个微调器

    我需要做的是 如果选择了微调器 1 中的某个项目 则需要在微调器 01 中显示某个数组 例如 如果微调器的一个选定项目是红色 则微调器 01 需要显示 level array 作为微调器 01 的下拉选项 否则显示 cparklevel 本
  • 组合两个不同类型的通用列表

    我有两个列表 List
  • Ctrl+C 不适用于 wpf 中的数据网格。当我按下 Ctrl+C 键时,文本不是数据网格当前单元格的副本

    This is my code In this I am trying to implement Ctrl C functionality but Ctrl C not working I used Keybinding in InputB
  • JBoss AS 7 升级到 Java 7、JBoss VFS

    我们有一个 spring 应用程序 它动态加载基于 lib 文件夹中的组件 该应用程序需要部署在不同的AS上 例如Jetty Tomcat JBoss 现在 JBoss 有这个 VFS 功能 它看起来并没有真正解压你的战争 而是使用vfs
  • 添加 eclipselink 工件时在 Weblogic 12.2.1 中自动注册 Jax-RS

    我在最新的 Weblogic 服务器版本 12 2 1 2 中观察到一个非常奇怪的行为 当 eclipselink 依赖项添加到 Java servlet 应用程序时 Weblogic 服务器将自动触发 resources 路径下的 Jax
  • 比较然后比较给出编译错误

    我正在尝试排序List使用 Java8 按姓名和年龄统计员工Comparator 我在下面创建了Comparator但它给了我一个编译器错误 Type mismatch cannot convert from Comparator to
  • AngularDart NgComponent 在控制器中使用事件监听器

    我有一个NgComponent在 Angular Dart 中 它实例化了一个搜索框 并根据查询字符串 它使用以下内容填充了我的 html 模板中的另一个 divng repeat指示 更确切地说 查询字符串更新 在我的组件控制器中存在一个
  • SQLite select语句优化建议

    我有一个 SQLite 表 详细信息 其结构 ID Name Category 1 Matt 0 2 Shervin 0 3 Bob 0 4 Lee 0 5 Rick 0 6 Suraya 0 7 Susan 0 8 Adam 0 9 Jo
  • 将字符串转换为日期时间时,毫秒精度正在改变

    我正在尝试将字符串转换为日期时间 如下所示select CONVERT datetime 31 05 2022 04 00 00 105 105 但毫秒的精度发生了变化 这怎么可能 就我而言 它给了我2022 05 31 04 00 00
  • 活动组示例

    任何人都可以给我一个 ActivityGroup 的例子吗 我听说通过使用 ActivityGroup 我们可以更改嵌套活动 保持 TabHost 不变 任何帮助将不胜感激 谢谢 大卫 布朗 大卫这是一个我发现有用的例子 http eric
  • 如何将库添加到 Eclipse CDT 管理的项目

    我正在使用Eclipse CDT 插件 http eclipse org cdt 编写简单的 C 程序 但我在文档中找不到有关如何执行以下操作的信息 Import C 标准库 http en wikipedia org wiki C sta
  • 更改 Google Maps Places API 中的默认文本“输入位置”

    我在互联网上寻找答案 试图找到我的问题的答案 我找到的最接近答案的是另一个 Stack Overflow 问题 在这里 如何更改 Google 地图 API 地点自动完成中的默认文本 https stackoverflow com ques
  • 我如何使用审计跟踪来显示哪些字段曾经被编辑过?

    对于我正在从事的一个项目 我被要求创建对记录所做的所有更改的审核跟踪 这是我第一次必须创建审计跟踪 因此我对此主题进行了大量研究 该应用程序将使用 PHP MSSQL 开发 并且流量较低 根据我的阅读 我几乎决定拥有一个审计表并使用触发器来
  • NetworkX:从节点属性向图中添加边

    我的节点有一个用逗号分隔的属性列表 我希望 networkx 比较它们 如果它们匹配 则在节点之间创建一条边 这就是我所得到的 但它不起作用 关于如何改进我的方法有什么想法吗 for node in G nodes while len G
  • Jenkins矩阵项目组合过滤器——如何配置groovy表达式?

    我有一个带有两个轴的 Jenkins 多配置项目 sbBrowser具有值 firefox ie chrome envConfig具有值 pp1 pp2 pp3 staging systemtest 我必须创建组合过滤器才能仅运行sbBro
  • 使用实体框架同步记录

    我正在尝试获取 SQL 服务器的功能MERGE http technet microsoft com en us library bb510625 aspx实体框架中的语句 在 WCF 服务中 我从客户端应用程序接收记录列表 我想将列表中所
  • 堆栈条形图缩放后,Flot 返回不正确的 x 值(mm/dd/yy - 日期)

    我想在用户缩放图表并单击特定栏时获得正确的 x 轴标签 当单击 02 14 14 xaxis 上的栏时 警报会显示 02 19 14 xaxis 标签 当缩放 选择 未触发时 它会返回正确的日期 但在缩放图表并单击栏后 它会填充错误的日期