나는 카운티의 choropleth 맵과 각 카운티의 인구를 보여주는 막대 차트가 있습니다. 막 대형 차트를 클릭하면지도가 필터링되고 선택된 막대가 표시되도록 다시 그려지지만 choropleth지도에서 카운티를 클릭하면 막 대형 차트가 필터링되어 인구 통계가 표시되지 않습니다. 나는 그것이 왜 한 방향으로 만 필터링 될지, 다른 방향으로는 필터링되지 않을지 이해하지 못합니다. 어떤 도움을 주셔서 감사합니다!DC.js - barChart가 geoChoroplethChart 클릭시 필터링되지 않았습니다.
<div id="iowa-map">
<strong>Population by counties (color: total population)</strong>
<a class="reset" href="javascript:iowaMap.filterAll();dc.redrawAll();" style="display: none; ">reset</a>
<span class="reset" style="display: none;"> | Current filter: <span class="filter"></span></span>
<div class="clearfix"></div>
</div>
<div id="population-chart">
<strong>Population by county</strong>
<a class="reset" href="javascript:populationChart.filterAll();dc.redrawAll();" style="display: none; ">reset</a>
<span class="reset" style="display: none;"> | Current filter: <span class="filter"></span></span>
<div class="clearfix"></div>
</div>
<div class="clearfix"></div>
<div>
<a href="javascript:dc.filterAll(); dc.renderAll();">Reset All</a>
</div>
var iowaMap = dc.geoChoroplethChart("#iowa-map");
var populationChart = dc.barChart("#population-chart");
d3.csv("iowaCountiesPop.csv", function (data) {
data.forEach(function (d) {
d.county = d.county;
d.popByCounty = +d.e2015;
});
var data = crossfilter(data);
var counties = data.dimension(function (d) {
return d.county;
});
var counties2 = data.dimension(function (d) {
return d.county;
});
var popByCounty = counties.group().reduceSum(function (d) {
return d.popByCounty;
});
d3.json("IowaCounties.json", function (countiesJson) {
iowaMap.width(990)
.height(500)
.dimension(counties)
.group(popByCounty)
.projection(d3.geo.mercator()
.translate([495, 250])
.rotate([93 + 20/60, -41 - 60/60])
.scale(7900))
.colors(d3.scale.quantile().range(colorScheme[quantiles]))
.colorDomain([0, 430640])
.overlayGeoJson(countiesJson.features, "NAME", function (d) {
return d.properties.NAME;
})
.title(function (d) {
return d.key + " County \nTotal Population: " + numberFormat(d.value);
})
.on('renderlet', function(map) {
map.selectAll("path").on("click", function(d) {
//console.log("click!", d)
map.filter(d.properties.NAME)
.redrawGroup();
})
});
populationChart.width(width)
.height(height)
.dimension(counties2)
.group(popByCounty)
.x(d3.scale.ordinal().domain(counties))
.xUnits(dc.units.ordinal)
.margins({top: 0, right: 0, bottom: 70, left: 70})
.yAxisLabel(["Population Values"])//,[12])
.xAxisLabel("County Names")
.barPadding(0.1)
.outerPadding(0.05)
.elasticY(false)
//.turnOnControls(true)
.on('renderlet', function(chart) {
chart.selectAll('rect').on("click", function(d) {
//console.log("click!", d)
chart.filter(d.data.key)
.redrawGroup();
})
chart.selectAll("g.x text")
.style("text-anchor", "end")
.attr("dx","-8")
.attr("dy", "5")
.attr("transform", "rotate(-50)");
});
dc.renderAll();
});
});
나는 이것이 실현 거의 완벽한 예입니다,하지만 당신은 (HTTP [데이터 포함] 그것의 바이올린 (제공 할 수있는 경우 : // (예 : stackoverflow.com/a/22896088/676195)) 또는 다른 실행중인 예제를 사용하면 훨씬 쉽게 진단 할 수 있습니다. – Gordon
잘 여기 jsfiddle - https://jsfiddle.net/bahanson/xo5dw3m6/에 넣어 내 시도하지만 실제로 작동하지 않는, 그래서 실제로 도움이 될 것입니다 의심. – bailey
ftfy : https://jsfiddle.net/gordonwoodhull/28qsa0jr/4/ - 단지 일반적인 버전이 일치하지 않아 데이터가 실제로 탭으로 구분되어 있지만 쉼표로 구분되어 있지 않습니다. 물론, 아마 당신의 코드를 열심히 쳐다 보았을 것입니다. 아마도 가장 자주 묻는 질문 일 것이기 때문에,이 코드를 사용하는 것이 도움이되었습니다. 감사합니다! – Gordon