text 带有D3直方图的CARTO 4.0

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了text 带有D3直方图的CARTO 4.0相关的知识,希望对你有一定的参考价值。

Map created with CARTO's new 4.0 JS (beta) library. Data sourced from [County Health Rankings and Roadmaps](http://www.countyhealthrankings.org/)
<!DOCTYPE html>
<html>

<head>
  <title>CARTO 4.0 with D3 Histogram</title>
  <meta name="viewport" content="initial-scale=1.0">
  <meta charset="utf-8">

  <link href="https://unpkg.com/leaflet@1.3.1/dist/leaflet.css" rel="stylesheet">
  <link href='https://fonts.googleapis.com/css?family=Lato:300,400,600,700' rel='stylesheet' type='text/css'>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    /* Mobile first styles b/c that's how we roll */

    html {
      box-sizing: border-box;
      height: 100%;
    }

    body {
      background: #f2f6f9;
      color: #374C70;
      font-family: Lato, sans-serif;
      position: relative;
    }

    h1, h2 {
      font-weight: normal;
      margin-bottom: 18px;
    }

    #map {
      width: 100%;
      height: 480px;
      margin: 12px;
      background: rgb(63, 150, 179);
    }

    #widgets {
      margin: 12px;
    }

    .widget {
      background: white;
      padding: 10px;
      margin-bottom: 10px;
    }

    #histogram {
      width: 100%;
    }
    div.tooltip {	
      position: absolute;					
      min-width: 60px;					
      min-height: 28px;					
      padding: 6px 12px;				
      color: whitesmoke;		
      background: #374C70;
      border-radius: 2px;			
      pointer-events: none;	
      z-index: 9999;		
    }

    /* CSS rules for larger devices */
    @media (min-width: 900px) {
      #container {
        display: flex;
      }
      #map {
        flex: 1.618;
        margin-right: 0;
      }
      #widgets {
        flex: 1;
      }
    }
  </style>
</head>

<body>
  <div id="container">
    <div id="map"></div>
    <div id="widgets">
      <div class="widget">
        <h2>2017 uninsured adults by county</h2>
        <div id="histogram">
          <svg></svg>
        </div>
      </div>
    </div>
  </div>

  <script src="https://unpkg.com/leaflet@1.3.1/dist/leaflet.js"></script>
  <script src="https://cartodb-libs.global.ssl.fastly.net/carto.js/v4.0.0-beta.20/carto.min.js"></script>
  <!-- Import babel standalone so the ES6 JS works -->
  <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
  <script src="https://d3js.org/d3.v5.js"></script>
  <script type="text/babel">
    // create a new Leaflet map
    const map = L.map('map').setView([-5, 2], 4);

    // Create  div for the tooltip and hide with opacity
    const div = d3.select("body").append("div")	
      .attr("class", "tooltip")				
      .style("opacity", 0);

    // position the tooltip when moving over the map
    // we'll handle the show/hide stuff with CARTO's method below
    d3.select("#map")
      .on("mousemove", event => {
        div.style("left", (d3.event.pageX + 10) + "px")		
          .style("top", (d3.event.pageY - 30) + "px");	
      })
      
    // create new carto client tied to account
    const client = new carto.Client({
      apiKey: 'default_public',
      username: 'rgdonohue'
    });

    // graticule clipped to North America, reprojected
    const graticuleSource = new carto.source.SQL(
      `
      SELECT ST_Transform(the_geom, 2163) 
        AS the_geom_webmercator, cartodb_id 
        FROM na_grat_clipped
      `
    );

    // request the land, reprojecting the geometries
    const landSource = new carto.source.SQL(
      `
      SELECT ST_Transform(the_geom, 2163) 
        AS the_geom_webmercator, cartodb_id 
        FROM ne_50m_land
      `
    );
    
    // request our data layer
    const uninsuredSource = new carto.source.SQL(
      `
        SELECT ST_Transform(the_geom, 2163) 
          AS the_geom_webmercator, cartodb_id, adults_percent, county
          FROM uninsured_counties_2017
      `
    );

    // styles for graticule
    const graticuleStyle = new carto.style.CartoCSS(
      `
      #layer{
          line-width: 1.8;
          line-color: #c7d4e8;
          line-opacity: 0.43;
        }
      `
    );

    // styles for land
    // based off https://carto.com/learn/guides/styling/styling-a-custom-basemap/#custom-fill-properties
    const landStyle = new carto.style.CartoCSS(
      `
      #layer {
      polygon-fill: #d6d4ca;
       polygon-opacity: 1;
       line-color: #979797;
       line-width: 0.25;
       line-opacity: 0.5;

        ::shadow{
          polygon-fill: #d6d4ca;
          image-filters: agg-stack-blur(10,10);
        }

        ::fill {
          line-color: #979797;
          line-width: 0.25;
          line-opacity: 0.5;
          polygon-opacity: 1;
          polygon-fill: #d6d4ca;
        }
      }
      `
    )
      
    // styles for datalayer 
    const uninsuredStyle = new carto.style.CartoCSS(
      `
      #layer {
          polygon-fill: ramp([adults_percent], cartocolor(OrYel), jenks(7));
          line-width: .7;
          line-color: #FFF;
          line-opacity: 0.4;
        }
      `
    )

    // create the carto layers using the source and styles
    const graticuleLayer = new carto.layer.Layer(graticuleSource, graticuleStyle);
    const landLayer = new carto.layer.Layer(landSource, landStyle);
    const uninsuredLayer = new carto.layer.Layer(uninsuredSource, uninsuredStyle, {
      // designate which attribute columns are accessible with interaction
      featureOverColumns: ['adults_percent', 'county']
    });
    
    // add the layers to the client
    client.addLayers([graticuleLayer, landLayer, uninsuredLayer]);

    // translate layers to Leaflet map
    client.getLeafletLayer().addTo(map);

    // are there any errors?
    client.on('error', clientError => {
        console.error(clientError.message);
    });

    // display and update tooltip on mouse over
    uninsuredLayer.on('featureOver', e => {
	    div.style("opacity", 1).html(`${e.data.county} County<br> ${e.data.adults_percent} % uninsured`)	
    });
    
    // hide the tooltip
    uninsuredLayer.on('featureOut', e => {
      div.style("opacity", 0)
    });

    // Create a histogram with x bins
    const histogram = new carto.dataview.Histogram(uninsuredSource, 'adults_percent', {
      bins: 7
    });

    // Set up a callback to render the histogram data every time new data is obtained
    histogram.on('dataChanged', histoData => {

      const data = histoData.bins.map(val => {
        var d = {};
        d.min = +val.min;
        d.max = +val.max;
        d.freq = +val.freq;
        return d;
      });

      drawHistogramChart(data);

    });

    // Add the histogram to the client
    client.addDataview(histogram);

    function drawHistogramChart(data) {
      // 7 class color OrYel scheme from
      // from https://github.com/CartoDB/CartoColor/blob/master/cartocolor.js
      // would be nice to derive colors and class breaks from TurboCARTO results above
      const colors = [
            "#ecda9a",
            "#efc47e",
            "#f3ad6a",
            "#f7945d",
            "#f97b57",
            "#f66356",
            "#ee4d5a"
      ]

      const margin = {
        top: 10,
        right: 0,
        bottom: 30,
        left: 50
      }

      // select target div
      const chartDiv = d3.select("#widgets");
      
      // width and height of chart based on rendered page
      const width = chartDiv.node().offsetWidth,
          height = chartDiv.node().offsetHeight - 100;
      
      // dynamically provide width/height
      const svg = d3.select("#histogram svg")
        .style('width', width + 'px')
				.style('height', height + margin.bottom + 'px')

      // define x axis range
      const x = d3.scaleBand()
        .domain(data.map(d => d.max))
        .range([margin.left, width - margin.right])
        .padding(0.1)

      // define y axis range
      const y = d3.scaleLinear()
        .domain([0, d3.max(data, d => d.freq)]).nice()
        .range([height - margin.bottom, margin.top])
      
      // draw x axis
      const xAxis = g => g
        .attr("transform", `translate(0,${height - margin.bottom})`)
        .call(d3.axisBottom(x).tickSizeOuter(0))
      
      // draw y axis
      const yAxis = g => g
        .attr("transform", `translate(${margin.left},0)`)
        .call(d3.axisLeft(y))
        .call(g => g.select(".domain").remove())
      
      // draw histogram bars
      svg.append("g")
        .selectAll("rect")
        .data(data).enter()
        .append("rect")
        .attr("fill", function(d,i) {
          return colors[i];
        })
        .attr("x", d => x(d.max))
        .attr("y", d => y(d.freq))
        .attr("height", d => y(0) - y(d.freq))
        .attr("width", x.bandwidth());
      
      svg.append("g")
          .call(xAxis);
      
      svg.append("g")
          .call(yAxis);

      // x-axis label
      svg.append("text")   
    	.attr("transform", `translate(${width/2},${height})`)    	
	    .style("text-anchor", "middle")
  		.attr("font", "16px sans-serif")
      .attr("fill", "#374C70")
       .attr("dy", "1.3em")
    	.text("% uninsured in county");
  
      // y-axis label
      svg.append("text")	
        .attr("transform", "rotate(-90)")
        .attr("y", 0)
        .attr("x", -height / 2)
        .attr("dy", "0.65em")
  		  .attr("font", "16px sans-serif")
        .attr("fill", "#374C70")
        .style("text-anchor", "middle")
        .text("# of counties");

    }
  </script>
</body>

</html>
iVBORw0KGgoAAAANSUhEUgAAAOYAAAB4CAIAAABpZBnfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0MzNGRjdEQjE0MTMxMUU4OTg1NEExQTkzQ0Y2MjNGOCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0MzNGRjdEQzE0MTMxMUU4OTg1NEExQTkzQ0Y2MjNGOCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjQzM0ZGN0Q5MTQxMzExRTg5ODU0QTFBOTNDRjYyM0Y4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjQzM0ZGN0RBMTQxMzExRTg5ODU0QTFBOTNDRjYyM0Y4Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+fHgnEAAAXAZJREFUeNrsvWmw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

以上是关于text 带有D3直方图的CARTO 4.0的主要内容,如果未能解决你的问题,请参考以下文章

D3图表绘制

d3.js 画笔填充颜色直方图

使用 Crossfilter 和 D3 重绘直方图

d3.js v5.4.0 中的拖动问题

d3 几种常用的柱状图

未捕获错误:未知类型:d3.js v5.4.0中的dragend