Q:

Why the data can't be bind with JSON file?

This is JSON file named Unit2Vec_tSNE.json and we can get the data points from pos element.
{
 "No 0": {
  "dur": 135, 
  "name": "00000001_0", 
  "lab": "sil", 
  "pos": [
   17.64800262451172, 
   -1.794445514678955
  ]
 }, 

"No 1": {
  "dur": 28, 
  "name": "00000001_1", 
  "lab": "uo", 
  "pos": [
   -17.94196891784668, 
   -0.8764857649803162
  ]
 }, 

"No 2": {
  "dur": 21, 
  "name": "00000001_2", 
  "lab": "x", 
  "pos": [
   2.7473323345184326, 
   13.970715522766113
  ]
 }
}

The JavaScript code is the following and I try use .data(dataset) function to bind the JSON data to points. 
But very strangely, it displays nothing and the console.log('Here!!!!!!!!!') of .attr("cx", function(d) doesn't run.
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>D3: A simple scatterplot, setting radii from data</title>
  <script type="text/javascript" src="../d3.js"></script>
  <style type="text/css">
    /* No style rules here yet */
  </style>
</head>
<body>
  <script type="text/javascript">
    //Width and height
    var w = 500;
    var h = 100;

    var dataset; // a global
    d3.json("Unit2Vec_tSNE.json", function(error, json) {
      if (error) return console.warn(error);
      dataset = json;
      visualize();
    });

    function visualize() {
      //Create SVG element
      var svg = d3.select("body")
        .append("svg")
        .attr("width", w)
        .attr("height", h);

      console.log(dataset); //work at here
      svg.selectAll("circle")
        .data(dataset)
        .enter()
        .append("circle")
        .attr("cx", function(d) {
          console.log('Here!!!!!!!!!'); //not work at here
          return d.pos[0];
        })
        .attr("cy", function(d) {
          return d.pos[1];
        })
        .attr("r", 1);
    }
  </script>
</body>
</html>

The points can't be seen and console.log('Here!!!!!!!!!'); doesn't run.
Why? How to fix it? Thanks.

I am a new man to D3.js. Because I want to use it do an interactive project for my AI experiment, so display this points (in real application, there are 450000 points) is needed.

A:

It is because dataset is an object and not array.
Quoting the d3 API :

selection.data([data[, key]]) Joins the specified array of data with the selected elements

So, if you change the structure of your JSON accordingly, you will see that your console.log is correctly executed.
You will have to tweak your code though to make it compatible in order to display the circles.
Demo with a correct format for the dataset variable:

var dataset = [
 {"No 0": {
  "dur": 135, 
  "name": "00000001_0", 
  "lab": "sil", 
  "pos": [
   17.64800262451172, 
   -1.794445514678955
  ]
 }}, 

{"No 1": {
  "dur": 28, 
  "name": "00000001_1", 
  "lab": "uo", 
  "pos": [
   -17.94196891784668, 
   -0.8764857649803162
  ]
 }}, 

{"No 2": {
  "dur": 21, 
  "name": "00000001_2", 
  "lab": "x", 
  "pos": [
   2.7473323345184326, 
   13.970715522766113
  ]
 }}
];

 //Width and height
            var w = 500;
            var h = 100;


              visualize();

    function visualize()
    {
            //Create SVG element
            var svg = d3.select("body")
            .append("svg")
            .attr("width", w)
            .attr("height", h);

            console.log(dataset);              //work at here
            svg.selectAll("circle")
            .data(dataset)
            .enter()
            .append("circle")
            .attr("cx", function(d) {
                console.log('Here!!!!!!!!!');  //work at here now too
              //  return d.pos[0]; // edit this according to the new structure
            })
            .attr("cy", function(d) {
              //  return d.pos[1]; // edit this according to the new structure
            })
            .attr("r", 1);
    }
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

