gpt4 book ai didi

javascript - 使用 d3.geo.mercator 的气泡图

转载 作者:行者123 更新时间:2023-11-28 02:41:06 27 4
gpt4 key购买 nike

我是一个完全 D3.js n00b 的人,所以如果这最终有一个我完全错过的 super 简单的解决方案,我深表歉意。不管怎样,我正在尝试在世界地图上创建气泡图。它将类似于 Symbol Maps但使用 d3.geo.mercator 而不是 d3.geo.albersUsa。我正在使用 world-countries.json 文件并创建了我自己的 world-country-centroids.json 文件。有任何想法吗?代码如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title>Countries of the World</title>
<script type="text/javascript" src="../../d3.v2.js"></script>
<style type="text/css">

svg {
width: 960px;
height: 500px;
}

#countries path, #country-centroids circle {
fill: #ccc;
stroke: #fff;
stroke-width: 1.5px;
}

#country-centroids circle {
fill: steelblue;
fill-opacity: .8;
}

</style>
</head>
<body>
<script type="text/javascript">

// The radius scale for the centroids
var r = d3.scale.sqrt()
.domain([0, 1e6])
.range([0, 10]);

// World Map Projection
var xy = d3.geo.mercator(),
path = d3.geo.path().projection(xy);


var svg = d3.select("body").append("svg");
svg.append("g").attr("id", "countries");
svg.append("g").attr("id", "country-centroids");

d3.json("../data/world-countries.json", function(collection) {
svg.select("#countries")
.selectAll("path")
.data(collection.features)
.enter().append("path")
.attr("d", d3.geo.path().projection(xy));
});

d3.json("../data/world-country-centroids.json", function(collection) {
svg.select("#country-centroids")
.selectAll("circle")
.data(collection.features
.sort(function(a, b) { return b.properties.population - a.properties.population; }))
.enter().append("circle")
.attr("transform", function(d) { return "translate(" + xy(d.geometry.coordinates) + ")"; })
.attr("r", 0)
.transition()
.duration(1000)
.delay(function(d, i) { return i * 50; })
.attr("r", function(d) { return r(d.properties.population); });
});

</script>
</body>
</html>

最佳答案

您需要在 SVG 元素上设置 widthheight 属性才能使其可见。不幸的是,这些属性无法通过样式属性设置,因为除了 SVG 元素的显示大小之外,它们还定义了 SVG 的坐标系。

var svg = d3.select("body").append("svg") 
.attr("width", 960)
.attr("height", 500);

如果您想重新缩放 SVG 元素(即,以不同于其原始大小的尺寸显示),除了属性之外,还可以使用样式属性,但您仍然需要设置属性。

关于javascript - 使用 d3.geo.mercator 的气泡图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12637937/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com