草庐IT

php - Google 图表 - 绘制空值

coder 2024-04-15 原文

我创建了一个折线图,它使用 php 和 json 加载数据。

问题是图表将 NULL 值绘制为 0,看起来非常难看。

我最好的猜测是我以错误的方式创建了 json,我真正想要的输出是 {"v":} 而不是 {"v":""}。

现在的折线图:

我想要的:

php代码

   $reports['cols'][] = array(label => "Time", type => "string");
        $reports['cols'][] = array(label => "Today", type => "number");
        $reports['cols'][] = array(label => "Yesterday", type => "number");
        $reports['cols'][] = array(label => "Budget", type => "number");

            //Some mysql code that populates values ($today, $yesterday, $budget)

        $rows = array();
        for($i=10; $i <= 21; $i++){

            $temp = array();
            $temp[] = array('v' => (int) $i);
                    //Format string will return "" and not "0" if value is blank
            $temp[] = array('v' => (string) $today["$i"]);
            $temp[] = array('v' => (string) $yesterday["$i"]);
            $temp[] = array('v' => (string) $budget);
            $rows[]['c'] = $temp;
        }

        $reports['rows'] = $rows;
        $string=json_encode($reports);
        echo $string;

php 的输出:

{
    "cols":[
        {"label":"Time","type":"string"},
        {"label":"Today","type":"number"},
        {"label":"Yesterday","type":"number"},
        {"label":"Budget","type":"number"}
    ],

    "rows":[
        {"c":[{"v":10},{"v":"0"},{"v":"0"},{"v":"90000"}]},
        {"c":[{"v":11},{"v":"22491"},{"v":"7420"},{"v":"90000"}]},
        {"c":[{"v":12},{"v":""},{"v":"50082"},{"v":"90000"}]},
        {"c":[{"v":13},{"v":""},{"v":"91660"},{"v":"90000"}]},
        {"c":[{"v":14},{"v":""},{"v":"109204"},{"v":"90000"}]},
        {"c":[{"v":15},{"v":""},{"v":"115280"},{"v":"90000"}]},
        {"c":[{"v":16},{"v":""},{"v":"111853"},{"v":"90000"}]},
        {"c":[{"v":17},{"v":""},{"v":"87368"},{"v":"90000"}]},
        {"c":[{"v":18},{"v":""},{"v":"33063"},{"v":"90000"}]},
        {"c":[{"v":19},{"v":""},{"v":"14903"},{"v":"90000"}]},
        {"c":[{"v":20},{"v":""},{"v":"1441"},{"v":"90000"}]},
        {"c":[{"v":21},{"v":""},{"v":"0"},{"v":"90000"}]}
    ]
}

Javascript

google.load("visualization", "1", {packages:["corechart"]});
    google.setOnLoadCallback(drawChart);
    function drawChart() {

    var jsonData = $.ajax({
        url: "functions/load.php?q=salesChart",
        dataType:"json",
        async: false
    }).responseText;

    // Create our data table out of JSON data loaded from server.
    var data = new google.visualization.DataTable(jsonData);

    var options = {
        title: 'Money / Hour',
        colors: ['#4BA15A', '#45559D', 'red'],
        legend: {position: 'top'},
        lineWidth: 2,
        pointSize: 3,
        fontName: 'Helvetica',
        fontSize: 10,
        interpolateNulls: false,
        backgroundColor: {strokeWidth: 1},
        chartArea: {left: 70, top: 60, width: "85%", height: "70%"} 
    };

    var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
    chart.draw(data, options);
}

最佳答案

我用 {"v":null} 替换了 {"v":""} 并且知道它看起来非常好!

jsonData=jsonData.replace(/\"\"/g, 'null');

结果是没有绘制 0 的图表

关于php - Google 图表 - 绘制空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18570975/

有关php - Google 图表 - 绘制空值的更多相关文章

  1. ruby - Google-api-ruby-client 翻译 API 示例 - 2

    很高兴看到google代码:google-api-ruby-client项目,因为这对我来说意味着Ruby人员可以使用GoogleAPI-s来完善代码。虽然我现在很困惑,因为给出的唯一示例使用Buzz,并且根据我的实验,Google翻译(v2)api的行为必须与google-api-ruby-client中的Buzz完全不同。.我对“Explorer”演示示例很感兴趣——但据我所知,它并不是一个探索器。它所做的只是调用一个Buzz服务,然后浏览它已经知道的关于Buzz服务的事情。对我来说,Explorer应该让您“发现”所公开的服务和方法/功能,而不一定已经知道它们。我很想听听使用这个

  2. ruby-on-rails - 这个 C 和 PHP 程序员如何学习 Ruby 和 Rails? - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它

  3. ruby - 如何从 URL 中删除 Google 跟踪参数 (UTM)? - 2

    我有一堆要清理的URL。它们都包含UTM参数,在这种情况下不是必需的,或者是有害的。示例:http://houseofbuttons.tumblr.com/post/22326009438?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+HouseOfButtons+%28House+of+Buttons%29所有可能的参数都以utm_开头。如何使用ruby​​脚本/结构轻松删除它们而不破坏其他潜在的“好”URL参数? 最佳答案 您可以将正则表达式应用于url以清

  4. ruby - 尝试授权服务器到 ruby​​ 中的服务器类型应用程序以访问 Google 日历时无效授权 - 2

    我正在尝试为自己创建一个直接连接到我的日历的应用程序……但我从不想参与重新验证。我只想编写一次身份验证代码并完成它。授权码如下:key=Google::APIClient::PKCS12.load_key(SERVICE_ACCOUNT_PKCS12_FILE_PATH,PASSWORD)asserter=Google::APIClient::JWTAsserter.new(SERVICE_ACCOUNT_EMAIL,'https://www.googleapis.com/auth/calendar',key)@client=Google::APIClient.new@client.a

  5. ruby-on-rails - 如何编写 Rails 4 测试以使用 omniauth-google-oauth2 gem 创建 session ? - 2

    我正在尝试为使用omniauth-google-oauth2gem创建session编写测试。我是否需要将env["omniauth.auth"]变量与post:create一起传递?也许当我试图这样做时,我做错了。我得到的错误如下所示...Rake测试错误1)Error:SessionsControllerTest#test_should_get_create:NoMethodError:undefinedmethod`provider'fornil:NilClassapp/models/user.rb:6:in`from_omniauth'app/controllers/sessi

  6. ruby - 如何在 Ruby 中使用 OpenID 访问 Google 通讯录 - 2

    我正在使用devise登录omniauth,authid。当用户登录时,我得到user_info:name:RiccardoTacconilast_name:Tacconiemail:email@gmail.comfirst_name:Riccardouid:https://www.google.com/accounts/o8/id?id=xxxxxxxxxprovider:google_apps我找到了一个插件:http://stakeventures.com/articles/2009/10/06/portable-contacts-in-ruby获取Google通讯录。我只需要使

  7. ruby-on-rails - 如何授权google-api-ruby-client? - 2

    我正在努力让google-api-ruby-clientgem按照这里的基本用法示例工作:基本用法require'google/apis/drive_v2'Drive=Google::Apis::DriveV2#Aliasthemoduledrive=Drive::DriveService.newdrive.authorization=...#SeeGoogleauthorSignetlibraries#SearchforfilesinDrive(firstpageonly)files=drive.list_files(q:"titlecontains'finances'")files

  8. ruby-on-rails - Rails 如何为 Google Charts 构建数据结构 - 2

    我想使用googlecharts创建一个如下所示的图表:GoogleChart.pie_400x200('TacoBell'=>0,'Mediterranean'=>2,'Shivas'=>5)给定一个对象Results(name,count)。如何为GoogleCharts的结构创建一个对象,如上所示?谢谢 最佳答案 从您在评论中列为@results的结果对象开始,以下应该有效:GoogleChart.pie_400x200(@results.map{|r|{r[:title]=>r[:percentage]}})

  9. Unity数据可视化图表插件XCharts3.0发布 - 2

    Unity数据可视化图表插件XCharts3.0发布历时8个多月,业余时间,断断续续,XCharts3.0总算发布了。如果要打个满意度,我给3.0版本来个80分。对于代码框架结构设计的调整改动,基本符合预期,甚是满意。相比之前的1.0和2.0版本,我认为3.0才是一个拿得出手给广大开发者使用的版本。1.0发布的时候,很兴奋,从0.1到1.0,也磨了一年,真的等不及想给大家试用了,还特地写过一篇文章以示庆祝。那个时候,1.0虽然还还不够完善,功能也不够丰富,但它是XCharts的开始,没有1.0,也就没有后面的2.0和3.0。后面的2.0发布,做了很多改进和优化,随着版本迭代,慢慢的发现有不少硬

  10. ruby-on-rails - Ruby on Rails 私有(private)链接共享 : Google Docs Style - 2

    如果要让用户能够共享一个私有(private)链接,让任何点击它的人都能查看具有隐私限制的特定页面/文档/项目,最好的方法是什么?以我为例:用户创建的事件仅限于数据库中某些关系组(即:friend、friend的friend等)我在事件Controller中有一个:before_filter检查资格当前登录用户的权限,以确保该用户有权查看该事件。如果他们不这样做,他们将被引导到根页面并显示一条错误消息。但是,我希望存在一个特殊场景,用户可以使用相同的隐私设置创建一个事件,此外,还可以通过电子邮件、Facebook等方式与他或她的friend分享一个特殊链接。那些用户不需要帐户(但需要创

随机推荐