2016-05-09 2 views
2

私のSVG要素は、このようセットアップです:SVGプロットをクリップするには?

svg.attr("viewBox", "0 0 " + chartView.displayWidth + " " + chartView.displayHeight); 

私はいくつかのプロットを描いてる内。そこに私のプロットを見ることができる "見る窓"を作成する方法はありますか?

私が使用してみました:

svg.append("clipPath").append("rect") 
        .attr("x", 10) 
        .attr("y", 10) 
        .attr("width", 50) 
        .attr("height", 100); 

をそれはすでにあなたがクリップ経路を使用することになり、コメントで述べた

+0

に関するいくつかのチュートリアルを読んで確認してください、あなたの矩形で全体SVGをクリップ代わりyourplot.attr(...)

svg.attr(...)を使用したい場合それは実際に?私はsvg.attrを設定できますか? –

+0

@RobertLongson実際には、それは直腸になるので、「クリップレット」ですか? –

+0

@RobertLongson私の編集を参照 –

答えて

1

としては動作しません。 appendを使用して既に作成しようとしました。私が知る限り、これはD3.jsまたはjQueryの構文です。しかし、あなたはsvg.jsとタグ付けしました。 svg.jsでは、このようにそれを行うだろう:あなたはD3.jsを使用している場合

svg.viewbox(0, 0, chartView.displayWidth, chartView.displayHeight); 

var plot = svg.path('your plots path data').stroke('#000') 

var clipper = svg.rect(50, 100).move(10, 10) 

// to clip the whole svg use svg instead of plot 
plot.clipWith(clipper) 

あなたはほとんどそこにあります。 すでにclippathを作成しています。あなたは今それにidを与えなければなりません、あなたのプロットでこのidを参照してください。

var clip = svg.append("clipPath").attr("id", "clipper"); 
clip.append("rect").attr("x", 10) 
        .attr("y", 10) 
        .attr("width", 50) 
        .attr("height", 100); 

yourplot.attr("clip-path", "url(#clipper)") 

あなたはSVG仕様または実行する方法のおかげで、@RobertLongson clipPaths

+0

私の質問によれば、 "yourPlot"は "svg"でなければなりません。 JavaScriptの答えにセミコロンを忘れないでください。愚かなようですが、Javascriptでは欠けているセミコロンはデバッグするPITAです。それは正常に動作します..回答が受け入れられました –

+0

必ずしもそうではありません。あなたがそれぞれの偏向プロットをウィンドウにしたい場合は、私が書いたようにそれを行う必要があります。あなたは、あなたが変更したものと理由を書き留めておかないで、答えを編集するべきではありません。 svg.jsのバージョンは、d3バージョンに適合しました。それに応じて変更します – Fuzzyma

+0

SVGにはviewBoxがありますので、 ''要素自体にclipPathを設定すると期待した結果は得られません。 –

関連する問題