使用按钮或链接文本在多个 Highcharts 之间切换

2024-01-31

我最初想在我的网站上以并排配置方式显示大量高图表。现在,我一直尝试在网站上仅包含一个高图表,并为观众提供使用按钮在它们之间切换的选项。我在这方面完全是新手,所以我在做这件事时遇到了一些问题。我一直在尝试使用以下小提琴:http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/members/series-setdata/ http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/members/series-setdata/

-> 但是这个例子和我的设置之间有一些差异,我遇到了麻烦。

我使用网上找到的一些 JSON 模板从数据库填充我的 highcharts(由于图表太多,我将所有代码保存在单独的 data.php 文件中)。一切正常。

这是我想要做的一个例子 - 我在下面的代码中插入了两个高图表,但还会有更多。每个图表都有不同的工具提示和 y 轴选项等,因此我认为仅更改数据本身是行不通的。

<!DOCTYPE html>
<html lang="en">
<meta charset="utf-8">
    <head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="http://code.highcharts.com/highcharts.js"></script>

<script type="text/javascript">
 $('chart1').ready(function() {
        var options = {
            chart: {
                renderTo: 'chart1',
                type: 'column',
                marginTop: 40,
                marginBottom: 75
            },
            legend: {
                enabled: false
            },
            title: {
                text: 'Revenues',
                x: 25 //center
            },

            xAxis: {
                title: {
                    text: ''
                },
                categories: []
            },
            yAxis: {
                showInLegend: false,
                tickAmount: 11,
                endOnTick: false,
                startOnTick: true,
                labels: {
                    formatter: function () {
                    return Highcharts.numberFormat(this.value, 0, '.', ',');
                                }
                },
                title: {
                    text: '<?php echo $unitCurr; ?>'
                },
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#808080'
                }]
            },
            tooltip: {
                formatter: function() {
                        return '<b>'+ this.series.name +'</b><br/>'+
                        this.x +': '+ Highcharts.numberFormat(this.y, 0,'.',',');
                }
            },
            series: []
        }
        var tableName = '<?php echo $tableName; ?>'
        $.getJSON("../../companies/charts/data.php", {id: escape(tableName)}, function(json) {
            options.xAxis.categories = json[0]['data'];
            options.series[0] = json[1];
            chart = new Highcharts.Chart(options);
        });
    });       


 $('chart2').ready(function() {
        var options = {
            chart: {
                renderTo: 'chart2',
                type: 'column',
                marginTop: 40,
                marginBottom: 75
            },
            legend: {
                enabled: false
            },
            title: {
                text: 'Net profit or loss',
                x: 25 //center
            },

            xAxis: {
                title: {
                    text: ''
                },
                categories: []
            },
            yAxis: {
                showInLegend: false,
                tickAmount: 11,
                endOnTick: false,
                startOnTick: true,
                labels: {
                    formatter: function () {
                    return Highcharts.numberFormat(this.value, 0, '.', ',');
                                }
                },
                title: {
                    text: '<?php echo $unitCurr; ?>'
                },
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#808080'
                }]
            },
            tooltip: {
                formatter: function() {
                        return '<b>'+ this.series.name +'</b><br/>'+
                        this.x +': '+ Highcharts.numberFormat(this.y, 1,'.',',');
                }
            },
            series: []
        }
        var tableName = '<?php echo $tableName; ?>'
        $.getJSON("../../companies/charts/data.php", {id: escape(tableName)}, function(json) {
            options.xAxis.categories = json[0]['data'];
            options.series[0] = json[6];
            chart = new Highcharts.Chart(options);
        });
    });

    </script>

</head>

<body>
    <div id="chart1"></div>
    <button id="button" class="autocompare">Set new data</button>
</body>


</html>

到目前为止的进展:

我尝试删除该 div 并使用下面的代码创建一个新的。这会导致删除“chart1”,但不会创建“chart2”。另外 - 事实上大约有 10 个图表需要创建,所以我想知道是否有人能想出一种方法,让 10 个按钮中的每一个都始终删除上面的当前图表,而是创建专用于该特定按钮的图表?

    <script>
    $('#button').on('click',function(){
        var elem = document.getElementById("chart1");
        elem.remove();
        var div = document.createElement('div');
        div.id = "chart2";
    });
    </script>

如果您能为我提供解释如何执行此操作或如何更好地理解整个事情的链接,我也非常高兴。我非常确定这必须使用 javascript 或 ajax 来完成,但我使用这些的经验很少,所以我只需要一点灵感。

预先非常感谢!


我会这样做 - 单击按钮,销毁图表并在其位置构建一个新图表。

此示例适用于页面上定义的数据和图表对象,但您可以在此单击事件处理程序内部,基于从单击的按钮获取的相同键来获取外部数据和外部图表选项定义。

  $(document).on('click', '.chart-update', function() {
    chart.destroy(); <-- destroys the current chart object
    $('#container').highcharts(chartOptions[$(this).data('chartName')]); <-- rebuilds a new chart
    chart = $('#container').highcharts(); <-- re-associates the 'chart' variable with the current chart object
  });

Fiddle:

  • http://jsfiddle.net/jlbriggs/7ntyzo6u/ http://jsfiddle.net/jlbriggs/7ntyzo6u/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用按钮或链接文本在多个 Highcharts 之间切换 的相关文章

随机推荐

  • 将基本身份验证和表单登录结合到同一个 REST Api

    有没有办法为同一个 REST 服务设置基本身份验证和表单登录 我想让登录的用户在登录后通过网络浏览器以及从命令行运行来触发此服务curl u username password hostname com api process现在我看到了这
  • 网站加载时显示旋转轮或进度条

    我正在使用名为 jquery treeview 的 jQuery 插件构建一个树视图 构建此树视图需要花费大量时间 大约 5 7 秒 并且我想在页面加载时显示旋转轮或进度条 有谁知道这是怎么做到的吗 我只找到了加载视频或图像的解决方案 其中
  • 来自 Google 的带有 Charts API 示例的 GWT 无法正常工作

    我已经下载了在 GWT 中使用图表所需的 jar 附带的存档 存档中还有示例应用程序 http gwt google com samples hellovisualization 1 1 0 HelloVisualization html
  • 向量和平均数的随机化

    我有一个计算累积平均值和标准差的脚本 library tidyverse tibble aa c 2 3 4 5 6 7 8 gt mutate running mean sapply seq n function i mean aa se
  • .NET 4.5 中等待完成后 HttpContext.Current 为 null

    我在 NET 4 5 Web 应用程序中定义了以下简单的 WCF 服务 ServiceContract public interface IService1 OperationContract WebGet UriTemplate json
  • 将猪结果存储到本地文件

    我运行pig脚本做了一些夸张的操作 并且输出大小非常小 现在我跑 hadoop fs getmerge 分别地 有什么办法让pig脚本将结果直接转储到本地文件中吗 如果您不担心将所有内容合并到一个文件中 那么您可以在 grunt 中使用 c
  • 如何使用OpenCV提高Grabcut算法的准确性?

    我正在使用 OpenCV 的抓取算法在 android 中对图像进行背景减除 算法运行良好 但给出的结果不准确 例如 我的输入图像是 输出图像如下所示 那么我们如何提高Grabcut算法的准确性呢 P S 由于声誉低而没有上传示例图像 对此
  • 将实例添加到 MEF 容器

    如何将已创建的实例添加到 MEF 容器 目录中以在解析导入时使用 我想要 Unity 提供的功能RegisterInstance其容器上的方法 您可以使用撰写导出值 http msdn microsoft com en us library
  • 内部有 Any() 的嵌套 for 循环的 Big O 是什么?

    这个问题基本上是我的后续问题在这里回答 https stackoverflow com a 38332524 542251 我真的很想说这个算法的大O是什么 但我不确定我的说法是否完全正确 所以给定两个数组 B Hello World He
  • MSBuild 条件 IsDebug

    如何确定项目是否在 MSBuild targets 文件中以调试 或发布 模式构建 并使用此信息作为另一个属性的条件 就像是
  • 在 CSV 行末尾查找未终止的引用字段

    无论如何 我们是否可以找到 CSV 行末尾未终止的引用字段 的行号 我正在尝试在 java 中读取 CSV 文件 但出现错误很可能是因为 有一个报价已打开但未关闭 我正在使用 deeplearning4j datavec 的 CSVReco
  • AES 加密在 iOS 和 Android 中产生不同的结果

    尝试在 Android 和 iOS 中使用带有 CBC 和 PKCS7 填充的 AES128 算法来加密示例数据 但结果不同 安卓代码 private static final byte KEY 0x01 0x02 0x03 0x04 0x
  • Html Agility Pack - 按 ID 或类删除标签

    这是我的简化 HTML div div div div div div class divToRemove div div class divToRemove div div 我想删除 ID 或类名为 divToRemove 的 div 然
  • R 错误:names() 应用于非向量

    我有一段代码 仅在第一次运行时才会产生错误 奇怪的是 如果我第二次运行它 我不会得到任何错误 疯狂的定义 此外 错误并不总是出现在同一位置 我的意思是 如果我添加几行注释 错误消息将在注释之后打印 而不是在特定指令之后打印 我无法提供可重现
  • RADIUS 和 EAP 如何以及在何处结合?

    我一直在阅读一些有关身份验证方法的内容 我读过有关 RADIUS 和 EAP 的内容 我只是不明白它们之间的联系 RADIUS是一种身份验证协议 它使用共享密钥和其他方法进行安全身份验证 而EAP更多的是一种通用协议 我知道 EAP 本身不
  • 使用 Roslyn 和 .NET Core 生成 C# 代码

    有没有办法使用 Roslyn 和 NET Core 生成 C 代码 我尝试使用 Microsoft CodeAnalysis CSharp 包中的 SyntaxFactory 我目前遇到的问题是从中获取正确格式的代码作为文本 到目前为止我见
  • 如何在带有延迟加载的primeng Turbotable中使用过滤器?

    我正在使用带有延迟加载选项的 PrimeNG TurboTable 来显示数据库中的数据 这很完美 现在 我需要向发送到服务器的请求添加一些过滤器 怎么做 这是有效的代码
  • 如何在 .net 中的另一台计算机上运行进程

    假设我的网络上的多台计算机上有一个名为 MyService 的 Windows 服务和一个名为 MyEXE 的可执行文件 是否可以 从 MyService 中 在不同 同一台计算机上启动 MyEXE 的多个实例 让它执行某些任务并向 MyS
  • Angular js:动态表达式不适用于 ng-switch-when

    我有一个基于 switch 的 div 但 switch 有一个布尔变量 但该值将根据 row id 进行评估 有人可以告诉我我在这里做错了什么吗 div a href getName row a a href getName row a
  • 使用按钮或链接文本在多个 Highcharts 之间切换

    我最初想在我的网站上以并排配置方式显示大量高图表 现在 我一直尝试在网站上仅包含一个高图表 并为观众提供使用按钮在它们之间切换的选项 我在这方面完全是新手 所以我在做这件事时遇到了一些问题 我一直在尝试使用以下小提琴 http jsfidd