在 JSON 文件中写入什么来创建多折线图 HTML

2023-12-28

我是 javascript 新手,所以请原谅我。我正在尝试制作一个折线图(有 4 条线),每小时更新一次。这些信息可以在 JSON 文件中找到,但我不确定如何编写它。以前我曾尝试使用data.addColumn() and data.addRows()但我找不到将其与 JSON 文件连接的方法。假设您要举个例子,请显示四种不同商品的销售数量

    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

        google.charts.load('current', {
        packages: ['corechart']
        }).then(function () {

        var options = {
            hAxis: {
            title: 'Time'
            },
            vAxis: {
            title: 'Sales'
            },
            title: 'Today',
            height: 600
        };

        var chart = new google.visualization.LineChart(document.getElementById('dagens'));

        var jsonData = $.ajax({
            url: 'getData.php',
            dataType: 'json',
        })

            drawChart(jsonData);

        }).done(drawChart);


        function drawChart(jsonData) {
            var data = new google.visualization.DataTable(jsonData);
            chart.draw(data, options);
        }

    </script>

在 getData.php 文件中这样写:

$string = file_get_contents("sampleData.json");
echo $string;

如果可能的话,我希望使用谷歌的图表系统。提前谢谢了。

编辑: JSON 文件:

{
  cols: [{label: 'Time', type: 'number'},
         {label: 'Sales 1', type: 'number'},
         {label: 'Sales 2', type: 'number'},
     {label: 'Sales 3', type: 'number'},
     {label: 'Sales 4', type: 'number'}
  ],
  rows: [
     {c:[{v: 0}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 1}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 2}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 3}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 4}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 5}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 6}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 7}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 8}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 9}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 10}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 11}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 12}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 13}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 14}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 15}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 16}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 17}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 18}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 19}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 20}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 21}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 22}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]},
     {c:[{v: 23}, {v: 1000}, {v: 1000}, {v: 1000}, {v: 1000}]}
  ]
}

为了直接从json创建一个google数据表,如下......

var data = new google.visualization.DataTable(jsonData);

json数据必须是非常特定的格式,发现here https://developers.google.com/chart/interactive/docs/reference#dataparam.

至于特定图表的数据格式,
每个都有特定的格式,折线图的数据格式可以找到here https://developers.google.com/chart/interactive/docs/gallery/linechart#data-format.

数据表中的第一列代表x轴,
它可以是任何类型(日期、数字、字符串等)。

以下各列均应为数字,
代表图表中的每个系列或要绘制的线条。

绘制折线图所需的 json 示例,
x 轴上有日期,
四行如下......

var jsonData = {
  "cols": [
    {"label": "Date", "type": "date"},
    {"label": "Sales A", "type": "number"},
    {"label": "Sales B", "type": "number"},
    {"label": "Sales C", "type": "number"},
    {"label": "Sales D", "type": "number"}
  ],
  "rows": [
    {"c":[{"v": "Date(2019, 10, 1)"}, {"v": 1000}, {"v": 2000}, {"v": 3000}, {"v": 4000}]},
    {"c":[{"v": "Date(2019, 11, 1)"}, {"v": 1000}, {"v": 2000}, {"v": 3000}, {"v": 4000}]},
    {"c":[{"v": "Date(2020, 0, 1)"}, {"v": 1000}, {"v": 2000}, {"v": 3000}, {"v": 4000}]},
    {"c":[{"v": "Date(2020, 1, 1)"}, {"v": 1000}, {"v": 2000}, {"v": 3000}, {"v": 4000}]}
  ]
};

使用ajax获取json数据时,
不要使用-->async: false-- 此选项已被弃用。

而是使用donePromise 方法,它将数据作为参数。

$.ajax({
  url: "getData.php",
  dataType: "json",
}).done(function (jsonData) {  // <-- json data argument
});

请参阅以下工作片段,
在这里,我使用failPromise 方法对数据进行硬编码,
因为您的 php 页面无法从该站点访问。
在你的服务器上,它应该可以在没有失败方法的情况下工作......

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {

  var options = {
    hAxis: {
      title: 'Time'
    },
    vAxis: {
      title: 'Sales'
    },
    title: 'Today',
    height: 600
  };

  var chart = new google.visualization.LineChart(document.getElementById('today'));

  $.ajax({
    url: 'getData.php',
    dataType: 'json',
  }).fail(function () {

    var jsonData = {
      "cols": [
        {"label": "Date", "type": "date"},
        {"label": "Sales A", "type": "number"},
        {"label": "Sales B", "type": "number"},
        {"label": "Sales C", "type": "number"},
        {"label": "Sales D", "type": "number"}
      ],
      "rows": [
        {"c":[{"v": "Date(2019, 10, 1)"}, {"v": 1000}, {"v": 2000}, {"v": 3000}, {"v": 4000}]},
        {"c":[{"v": "Date(2019, 11, 1)"}, {"v": 1000}, {"v": 2000}, {"v": 3000}, {"v": 4000}]},
        {"c":[{"v": "Date(2020, 0, 1)"}, {"v": 1000}, {"v": 2000}, {"v": 3000}, {"v": 4000}]},
        {"c":[{"v": "Date(2020, 1, 1)"}, {"v": 1000}, {"v": 2000}, {"v": 3000}, {"v": 4000}]}
      ]
    };

    drawChart(jsonData);

  }).done(drawChart);


  function drawChart(jsonData) {
    var data = new google.visualization.DataTable(jsonData);
    chart.draw(data, options);
  }

});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="today"></div>

EDIT

ajax调用有问题。
改变从...

    var jsonData = $.ajax({
        url: 'getData.php',
        dataType: 'json',
    })

        drawChart(jsonData);

    }).done(drawChart);

改成...

    $.ajax({
        url: 'getData.php',
        dataType: 'json',
    }).done(drawChart);

另外,您似乎缺少加载语句承诺的右括号。
试试这个代码...

google.charts.load('current', {
  packages: ['corechart']
}).then(function () {

  var options = {
    hAxis: {
      title: 'Time'
    },
    vAxis: {
      title: 'Sales'
    },
    title: 'Today',
    height: 600
  };

  var chart = new google.visualization.LineChart(document.getElementById('dagens'));

  $.ajax({
    url: 'getData.php',
    dataType: 'json',
  }).done(drawChart);


  function drawChart(jsonData) {
    var data = new google.visualization.DataTable(jsonData);
    chart.draw(data, options);
  }

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

在 JSON 文件中写入什么来创建多折线图 HTML 的相关文章

  • 录制视频和音频并上传到服务器

    我想为网站添加视频录制功能 我一直在搜索并尝试所有可能的可用解决方案 但还没有任何工作正常 我已经尝试过以下解决方案 WebRTC 我知道使用 WebRTC 我们可以从网络摄像头和麦克风获取流 我发现了很多关于相同内容的文章 但没有一篇解释
  • 如果 JavaScript 中未定义,则设置变量

    我知道我可以测试 JavaScript 变量 然后定义它 如果是 undefined 但是有没有什么办法可以说 var setVariable localStorage getItem value 0 似乎是一种更清晰的方式 而且我很确定我
  • Angular 2延迟加载模块-服务不是单例

    我已经在我的应用程序中实现了延迟加载模块 app module ts 配置正确 NgModule declarations AppComponent HeaderComponent HomeComponent imports Browser
  • 替换后正确的子串位置

    我有一个由用户提供的这样的函数 function replace function string return string replace smile g replace foo bar baz g text 1 我有这样的输入字符串 v
  • 从请求响应创建 PDF 不适用于 axios,但适用于本机 xhr

    为了强制从服务器下载 PDF 我尝试使用 axios 和本机 xhr 对象 原因是我必须发送post请求 因为我向服务器传递了太多数据 所以带有简单链接的选项 例如site ru download pdf对我不起作用 尽管我最终设法用 Xh
  • HTML5 画布在缩放和旋转后平移

    我正在尝试用画布做一些事情 首先 我让用户上传图像 如果图像比我想要的大 我需要将其缩小 那部分工作得很好 最近我们遇到了 iPhone 用户上传图像的问题 这些都存在方向问题 我已经弄清楚如何提取方向 我的问题是当我操纵画布中的图像时会发
  • 在 MongoDB 中对 Null 值进行最后排序

    我使用以下查询根据名为 sortIndex 的字段按升序填充 MongoDB 中的项目 有时 数据库中的项目没有 sortIndex 字段 通过以下查询 具有 null sortIndex 的项目显示在顶部 我想知道如何让它们显示在底部 我
  • WordPress ~ 如何在一页上显示多个 Google Chart?

    下面是我插入到 WordPress Visual Composer 中的原始 HTML 块中的一个 Google 图表的代码 图表 ID 名称为 chart div1 这适用于我的 WP 网页
  • Node.js ES6如何从模块导出类? [复制]

    这个问题在这里已经有答案了 我正在尝试从 Node js 6 2 0 中的 CommonJS 模块导出 ES6 类 class MyClass class contents here exports MyClass 然后将其导入到另一个模块
  • chrome.extension.getBackgroundPage() 函数示例

    我正在开发一个需要在后台运行的小型 Chrome 扩展 但是 我知道当我使用弹出窗口时这是不可能的 经过一番阅读后 似乎最好的选择是创建popup js为了运行background js using chrome extension get
  • Javascript TypeError:无法读取未定义的属性“indexOf”

    在此代码中 我想从cart products array var cart products 17 1 19 1 18 1 var product 17 each cart products function key item if ite
  • Angularjs + Typescript,如何将 $routeParams 与 IRouteParamsService 一起使用

    我使用 routeParams 从 URI 中提取属性并为其设置本地变量 当我使用打字稿输入设置 route 参数的类型时 我无法再访问 route 参数 如何访问 routeParams 中的属性 class Controller con
  • Angular 中的动态子组件

    我正在构建一个具有一致的元素列表设计模式的应用程序 如果我有一个 A 类型的对象 我会创建AComponent它接受a作为输入 然后创建另一个组件来迭代 A 列表 AListComponent 那么如果我有一个对象 B 我需要做同样的事情
  • Img src 路径以及要传递的标头参数

    我在 jsp 页面中有一个 img 标记 其中 src 路径需要传递标头参数才能获取图像 我们怎样才能实现它呢 您现在可以使用fetch https developer mozilla org en US docs Web API Fetc
  • 如何检查令牌过期和注销用户?

    当用户单击注销按钮时 他 她可以自己注销 但是如果令牌过期 他 她就无法注销 因为在我的应用程序中 令牌在服务器端和前端都使用 当用户单击注销按钮时 如果令牌有效 则服务器和浏览器中的令牌都会被清除 当用户未注销并且他 她的令牌过期但未在浏
  • iOS Javascript 引擎 parseFloat(1) 返回负数

    这段代码将使错误出现 function causeBug d var k var n parseFloat 1 var c Math abs d if n lt 0 k else k return k n function for var
  • HTTPS 网站上的 ShareThis 按钮不可点击

    我已将 共享此 按钮添加到我的安全站点 现在单击它们时会产生错误 下面提到了错误 以前有人遇到过这个问题吗 阻止加载混合活动内容 http w sharethis com button buttons js http w sharethis
  • React 不适用于 Android 4.4.2 Web 视图浏览器

    React 在我的 Android 手机上不起作用 我不认为这是我的代码错误 因为即使我写的唯一内容是 p hello world p 它仍然没有显示 在 chrome 远程吊顶上查看后 这显示了 Map is not defined 以前
  • AES 在 cryptojs 中加密并在 python Crypto.Cipher 中解密

    使用 js CryptoJS 加密并使用 python crypto Cipher 解密时出现问题 这是我在js中的实现 附加 iv 与加密消息并使用 base64 进行编码
  • 如何使用javascript取消设置变量? [复制]

    这个问题在这里已经有答案了 这是我到目前为止所尝试的 var nxt I am next window onscroll function var scr this pageYOffset if scr gt 400 console log

随机推荐

  • 构建詹金斯缺失的历史

    我刚刚为我的项目设置了一个新的 Jenkins 实例 版本 2 19 4 但是 当我尝试生成多个构建进行测试时 我发现构建历史记录仅向我显示一个历史构建 升级之前 至少显示两个或更多 詹金斯中有一个地方可以设置应该显示的历史构建的数量吗 在
  • 我可以将 Google Places API 中的姓名、地址和纬度/经度存储在我自己的数据库中吗?

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 Google Places 关于存储信息的术语可能有点令人困惑 我希望有人能提供一些说明 我想构建一个数据库并收集有关企业的独特数据
  • MSBuild 是否需要安装 Visual Studio?

    我正在使用 Atlassian Bamboo 设置构建服务器 MSBuild 包含在 NET 框架中 所以我相信我至少可以在没有 VS2010 的情况下很好地构建 NET 应用程序 我们主要使用 C 进行开发 我是否需要在构建服务器上安装
  • 异步函数何时实际返回待处理的承诺?

    我用谷歌搜索了这个问题很多次 但我看到这个问题的唯一答案是 异步函数总是返回一个承诺 但我没有找到任何可以回答这种情况何时真正发生的问题 是一进入异步函数还是一遇到第一个await关键词 我刚刚写了这段代码 async function m
  • 使用 JavaScript 平滑更改文本

    我正在制作一个登陆页面 其中的短语会随着选定的单词而不断变化 例如 设计更好的网站为客户制作 将切换第一个或最后一个单词成为 开发更好的网站为客户制作 然而 由于 开发 这个词比 设计 更大 因此文本的其余部分最终会被推来推去 而无法顺利过
  • 使用 cURL 测试 AWS API Gateway

    我确实有一个受 AWS IAM 授权保护的简单 AWS API Gateway 实施 我只想通过 cURL 从命令行进行测试 curl location request GET https
  • 在 WPF 中使用快速彩色文本框进行语法突出显示

    是否可以在 WPF 中使用快速彩色文本框进行语法突出显示 http www codeproject com Articles 161871 Fast Colored TextBox for syntax highlighting http
  • 在 Notepad++ 中智能突出显示时显示出现次数

    是否可以显示智能突出显示的单词出现的次数 我的意思是当你双击一个单词时 在 Matlab 中 例如通过让光标触摸单词并在工具栏中显示它来激活智能突出显示即刻例如说4 usages of weight found 搜索单词 短语将为您提供相同
  • jQuery 1.8 中的 pipeline() 和 then() 文档与现实

    更新 这个问题现在已经过时了 因为文档是准确且最新的 我一直在探索 jQuery Deferred Promise API 但我对两者之间的差异感到非常困惑pipe and then 在哲学上和 jQuery 文档中 我发现从 jQuery
  • 函数(d)和函数(d,i)之间的区别?

    Every D3js初学者我一定正在经历这个想法 我对此非常确定 我已经在这个东西上呆了几个小时了 但我不知道如何使用它 也不知道它是什么不同之处它们之间 function d return d function d i return d
  • 如何从栅格中提取其最高值位于多边形内的 xy 坐标?

    给出的是一个栅格以及一个 SpatialPolygonsDataframe 为了检索多边形区域内栅格的最高值 可以使用 raster extract 效果很好 如何另外获取多边形区域内栅格提取的最高值的坐标 create raster r
  • 如何使用 WebMatrix 连接到 SQL Server 数据库?

    我添加了一个连接 它显示在 其他连接 中 但我似乎无法引用它 var db Database Open MyNewConnection 抛出异常 Connection string MyNewConnection was not found
  • 在 Azure Function 中添加自定义遥测属性

    我有一个 Azure 函数 v2 其中数据通过 HTTP 主体以 JSON 形式传入 我想使用标准在 Application Insights 中记录一些 JSON 数据Trace and Request events 到目前为止我尝试过的
  • 使用 Task.WhenAll 执行多个任务时 foo.Start() 出现错误

    我收到此错误 可能无法在承诺式任务上调用 Start 所以我注释掉了 Start 我再次尝试并收到此错误 可能无法在已完成的任务上调用启动 那么我应该怎么做才能使其正常工作呢 var dashboardDailyAgeAnalysis Da
  • 如何在 Visual Studio 中更快地键入“{0}”?

    在 C 中 通常需要输入 0 1 等格式化字符串时string Format https msdn microsoft com en us library system string format v vs 110 aspx or Cons
  • 使用正则表达式验证 Youtube 播放列表 URL

    如何验证 YouTubeplaylisturl 使用正则表达式 我找到了验证其他问题视频的答案 http www youtube com watch v w S 但我无法验证这样的网址 http www youtube com watch
  • OSX El Capitan 上的 crontab 是否损坏?

    问题 Is cron应该在 OSX El Capitan 中工作吗 背景 我在 OSX 上使用 crontab 已经很多年了 但在 El Capitan 上它似乎不起作用 我将我的用户名添加到 usr lib cron cron allow
  • 将省略号传递给另一个可变参数函数[重复]

    这个问题在这里已经有答案了 我有大约 30 个可变参数函数 每个都接受路径作为最终参数 例如 bool do foo struct f int q const char fmt 在每个函数中 我必须检查扩展格式是否小于或等于特定大小 因此
  • OpenID Microsoft 登录后,PWA 在 Safari iOS (13.5) 中冻结导航点击

    OpenID 授权用户后 PWA 冻结 iOS Safari Standalone 我为我们的安全人员构建了一个简单的 PWA 允许员工单击链接并查看有关我们公司在各种事务上的政策的内容 该应用程序使用 Microsoft 的 OWIN 中
  • 在 JSON 文件中写入什么来创建多折线图 HTML

    我是 javascript 新手 所以请原谅我 我正在尝试制作一个折线图 有 4 条线 每小时更新一次 这些信息可以在 JSON 文件中找到 但我不确定如何编写它 以前我曾尝试使用data addColumn and data addRow