我创建了一个折线图,它使用 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/
很高兴看到google代码:google-api-ruby-client项目,因为这对我来说意味着Ruby人员可以使用GoogleAPI-s来完善代码。虽然我现在很困惑,因为给出的唯一示例使用Buzz,并且根据我的实验,Google翻译(v2)api的行为必须与google-api-ruby-client中的Buzz完全不同。.我对“Explorer”演示示例很感兴趣——但据我所知,它并不是一个探索器。它所做的只是调用一个Buzz服务,然后浏览它已经知道的关于Buzz服务的事情。对我来说,Explorer应该让您“发现”所公开的服务和方法/功能,而不一定已经知道它们。我很想听听使用这个
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它
我有一堆要清理的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以清
我正在尝试为自己创建一个直接连接到我的日历的应用程序……但我从不想参与重新验证。我只想编写一次身份验证代码并完成它。授权码如下: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
我正在尝试为使用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
我正在使用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通讯录。我只需要使
我正在努力让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
我想使用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]}})
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发布,做了很多改进和优化,随着版本迭代,慢慢的发现有不少硬
如果要让用户能够共享一个私有(private)链接,让任何点击它的人都能查看具有隐私限制的特定页面/文档/项目,最好的方法是什么?以我为例:用户创建的事件仅限于数据库中某些关系组(即:friend、friend的friend等)我在事件Controller中有一个:before_filter检查资格当前登录用户的权限,以确保该用户有权查看该事件。如果他们不这样做,他们将被引导到根页面并显示一条错误消息。但是,我希望存在一个特殊场景,用户可以使用相同的隐私设置创建一个事件,此外,还可以通过电子邮件、Facebook等方式与他或她的friend分享一个特殊链接。那些用户不需要帐户(但需要创