google 图表显示错误数据
google chart shows wrong data
我在用 Google 图表创建数据图表时遇到了一些问题,我不知道为什么我的图表会这样显示?
正如您在图片中看到的那样,y 值应该是 2,但我得到的是 3 左右。什么会导致这个问题?
这是我当前的代码:
private DataTable GetData()
{
DataTable dt = new DataTable();
string cmd = "SELECT TotalShipped, TotalOnTime, TotalOnTime / TotalShipped * 100 AS LISC" +
" FROM (SELECT COUNT(*) AS TotalShipped, SUM(CASE LISC WHEN 100 THEN 1.0 ELSE 0.0 END) AS TotalOnTime" +
" FROM dbo.tbl_LISC) AS t";
SqlDataAdapter adp = new SqlDataAdapter(cmd, conn);
adp.Fill(dt);
return dt;
}
并且:
private void BindChart()
{
DataTable dt = new DataTable();
try
{
dt = GetData();
str.Append(@"<script type=*text/javascript*> google.load( *visualization*, *1*, {packages:[*corechart*]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('number', 'TotalOnTime');
data.addColumn('number', 'LISC');
data.addRows(1);");
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
str.Append("data.setValue( " + i + "," + 1 + "," + "'" + dt.Rows[i]["LISC"].ToString() + "');");
str.Append("data.setValue(" + i + "," + 0 + "," + dt.Rows[i]["TotalOnTime"].ToString() + ") ;");
}
str.Append(" var chart = new google.visualization.BarChart(document.getElementById('chart_div'));");
str.Append(" chart.draw(data, {width: 1850, height: 500,bars: 'horizontal', title: 'Materiales',");
str.Append("hAxis: {title: 'LISC', titleTextStyle: {color: 'green'},viewWindow:{max:100,min:0}}");
str.Append("}); }");
str.Append("</script>");
lt.Text = str.ToString().Replace('*', '"');
}
catch
{
}
}
这是查询结果:
对此的任何帮助或评论都是有帮助的。
谢谢。
y 值正确。检查 Y 轴上的值,它们被分成 3/4 的值。
您的图形介于 2.5 和 3.25 之间,比 2.5 更接近 3.25,因此可以猜测它在 2 左右。
这是由 google 函数自动决定附加网格线的数量和值引起的。
检查配置方法 here,然后跳转到 vAxis.gridlines 看看您可以改变什么来实现您正在寻找的东西。
我在用 Google 图表创建数据图表时遇到了一些问题,我不知道为什么我的图表会这样显示?
正如您在图片中看到的那样,y 值应该是 2,但我得到的是 3 左右。什么会导致这个问题?
这是我当前的代码:
private DataTable GetData()
{
DataTable dt = new DataTable();
string cmd = "SELECT TotalShipped, TotalOnTime, TotalOnTime / TotalShipped * 100 AS LISC" +
" FROM (SELECT COUNT(*) AS TotalShipped, SUM(CASE LISC WHEN 100 THEN 1.0 ELSE 0.0 END) AS TotalOnTime" +
" FROM dbo.tbl_LISC) AS t";
SqlDataAdapter adp = new SqlDataAdapter(cmd, conn);
adp.Fill(dt);
return dt;
}
并且:
private void BindChart()
{
DataTable dt = new DataTable();
try
{
dt = GetData();
str.Append(@"<script type=*text/javascript*> google.load( *visualization*, *1*, {packages:[*corechart*]});
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('number', 'TotalOnTime');
data.addColumn('number', 'LISC');
data.addRows(1);");
for (int i = 0; i <= dt.Rows.Count - 1; i++)
{
str.Append("data.setValue( " + i + "," + 1 + "," + "'" + dt.Rows[i]["LISC"].ToString() + "');");
str.Append("data.setValue(" + i + "," + 0 + "," + dt.Rows[i]["TotalOnTime"].ToString() + ") ;");
}
str.Append(" var chart = new google.visualization.BarChart(document.getElementById('chart_div'));");
str.Append(" chart.draw(data, {width: 1850, height: 500,bars: 'horizontal', title: 'Materiales',");
str.Append("hAxis: {title: 'LISC', titleTextStyle: {color: 'green'},viewWindow:{max:100,min:0}}");
str.Append("}); }");
str.Append("</script>");
lt.Text = str.ToString().Replace('*', '"');
}
catch
{
}
}
这是查询结果:
对此的任何帮助或评论都是有帮助的。 谢谢。
y 值正确。检查 Y 轴上的值,它们被分成 3/4 的值。
您的图形介于 2.5 和 3.25 之间,比 2.5 更接近 3.25,因此可以猜测它在 2 左右。
这是由 google 函数自动决定附加网格线的数量和值引起的。
检查配置方法 here,然后跳转到 vAxis.gridlines 看看您可以改变什么来实现您正在寻找的东西。