首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在区域图中设置动态图

在区域图中设置动态图
EN

Stack Overflow用户
提问于 2019-05-13 06:24:03
回答 2查看 354关注 0票数 0

我动态地制作一个区域图,因为我想动态地设置数据数组。我创建了变量并给它赋值,我给出了下面的例子

代码语言:javascript
复制
$dataPoints = '30, 10, 40, 20, 30, 10, 50, 30, 30, 30, 40';

代码语言:javascript
复制
var dataPoints1 = '<?php echo $dataPoints; ?>';

var areaChart = c3.generate({
        bindto: '#area-chart',
        data: {
            columns: [
                ['Score', dataPoints1]
            ],
            
            types: {
                data1: 'area',
                Score: 'area-spline'
            }
        },
        tooltip: {
            show: true
        },
        legend: {
            show: false
        },
        axis: {
            x: {
                show: false
            },
            y: {
                show: false
            },
        },
        grid:{
            focus:{
                show:false
            }         
        }  
    });

但是这个脚本不起作用,它不显示一个图形,如果我静态地设置这个值,那么它工作得很好。

所以有人能帮我这个忙吗..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-13 06:48:29

与其将php字符串提取到js变量中,不如将php字符串直接传递到列中,这样就可以工作了。

代码语言:javascript
复制
var areaChart = c3.generate({
    bindto: '#area-chart',
    data: {
        columns: [
            ['Score', <?php echo $dataPoints; ?>] // use php variable directly
        ],

        types: {
            data1: 'area',
            Score: 'area-spline'
        }
    },
    tooltip: {
        show: true
    },
    legend: {
        show: false
    },
    axis: {
        x: {
            show: false
        },
        y: {
            show: false
        },
    },
    grid:{
        focus:{
            show:false
        }         
    }  
});

不需要dataPoints1 js变量。

编辑

在这种情况下,

在php中,我想ajax,

代码语言:javascript
复制
$dataPoints["Score"] = [30, 10, 40, 20, 30, 10, 50, 30, 30, 30, 40];
echo json_encode($dataPoints); die;

在JS中

代码语言:javascript
复制
var chart = c3.generate({
    bindto: '#area-chart',
    data: {
        url: 'your url to fetch above data',
        mimeType: 'json',
        types: {
            data1: 'area',
            Score: 'area-spline'
        }
    },
    tooltip: {
        show: true
    },
    legend: {
        show: false
    },
    axis: {
        x: {
            show: false
        },
        y: {
            show: false
        },
    },
    grid: {
        focus: {
            show: false
        }
    }
});

这应该能解决你的问题

票数 0
EN

Stack Overflow用户

发布于 2019-05-13 07:21:37

我以您的代码为例,尝试使用我的数据库连接和示例表数据来修改代码。

请试试这个,希望这对你有帮助。

文件(PHP + HTML + jQuery)

代码语言:javascript
复制
<?php
  $servername = "localhost"; // Change with your server name
  $username = "root"; // Change with your user name
  $password = ""; // // Change with your password
  $dbname = "test"; // // Change with your database name

  // Create connection
  $conn = new mysqli($servername, $username, $password, $dbname);
  // Check connection
  if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
  } 

  $sql = "SELECT data FROM users"; // // Change with your table name
  $result = $conn->query($sql);

  $dataPoints = '';
  if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        $dataPoints .= $row['data'];
        $dataPoints .= ',';
    }
    rtrim($dataPoints);
    echo $dataPoints;
  } else {
    echo "0 results";
  }
  $conn->close();
?>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <title>C3.js</title>
  <style type="text/css">
    body{
      text-align: center; 
    }

  </style>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.10/c3.min.css" />
  <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.16/d3.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/c3/0.4.10/c3.min.js"></script>
</head>
<body>
  <div class="container">
    <h1>Graphs made easy</h1>
    <div id="chart"></div>
  </div>
  <script type="text/javascript">

    var dataPoints1 = ["Score", <?php echo $dataPoints;?>];
    console.log('dataPoints : ', <?php echo $dataPoints;?>);
    console.log('data2 : ', dataPoints1);

    var areaChart = c3.generate({
      bindto: '#chart',
      data: {
        columns: [
            dataPoints1
        ],

        types: {
            data1: 'area',
            Score: 'area-spline'
        }
      },
      tooltip: {
        show: true
      },
      legend: {
        show: false
      },
      axis: {
        x: {
            show: false
        },
        y: {
            show: false
        },
      },
      grid:{
        focus:{
            show:false
        }         
      }  
    });
</script>
</body>
</html>

输出

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56106746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档