0
D3을 사용하여 그라디언트로 채워진 큰 오브젝트를 만들었지 만 오브젝트가 클수록 그라디언트가 부드럽게됩니다.긴 SVG 오브젝트에서의 그라디언트 스무딩
<script type="text/javascript" src="http://mbostock.github.com/d3/d3.js?1.27.1">
<script type="text/javascript">
var w = 4000,
h = 100,
m = 50;
var svg = d3.select("body").append("svg:svg")
.attr("width", w)
.attr("height", h);
var gradient = svg.append("svg:defs")
.append("svg:linearGradient")
.attr("id", "gradient")
.attr("x1", "0%")
.attr("y1", "0%")
.attr("x2", "100%")
.attr("y2", "0%")
.attr("spreadMethod", "pad");
for (i=0; i<m; i++) {
gradient.append("svg:stop")
.attr("offset", (i*100.0)/(m-1.0) + "%")
.attr("stop-color", "hsl(240,0%,"+(i%2)*100+"%)")
.attr("stop-opacity", 1);
}
svg.append("svg:rect")
.attr("width", w)
.attr("height", h)
.style("fill", "url(#gradient)");
</script>
는 SVG 일부 특성으로 평활화 기울기를 증가시킬 수있다 : 아티팩트 같은 타입을 생성 코드의 예입니다?
감사 :
당신은 여기에서 데모를 볼 수 있습니다. Firefox에서는 잘 작동합니다. 그러나, 그 해결 방법은 실용적이지 않습니다. 다른 정지 색상은 다른 값을 가져야합니다. 수치는 측정에서 다른 밀도를 나타내야합니다. 그래서 hsl을 사용하고 있습니다. 또한 여러 숫자로 큰 숫자를 나누는 것은 옵션이 아닙니다. –
음, 주위를 둘러보기위한 어려운 방법은 'rect'을 여러 개의 그라데이션으로 나누어 하나의 긴 하나를 생성하는 것입니다. 두 개의 직사각형이 만나는 곳에 렌더링 아티팩트가 생길 수 있습니다. – meetamit