2011-10-03 3 views
6

Mathematica에서 손으로 그린 ​​오브젝트를 프로그래밍 방식으로 생성 된 오브젝트와 분리하는 가장 쉬운 방법은 무엇입니까?Mathematica에서 "손으로 그린"오브젝트 분리하기

대화 형 그리기 도구는 편리하고 유용합니다. 그러나 음모 상단에 무언가를 그려 보면 음모가 다시 생성되는 즉시 잃어 버리게됩니다. 이 편리한 솔루션이 있습니까?

나는 그림을 빈 플롯 위에 표시 할 수 있으며, 실제 플롯과 결합 할 수 있습니다. 그러나 빈 플롯의 플롯 범위를 수동으로 설정해야하며 맨 위에 내가 주석을 추가하는 배경이 보이지 않기 때문에 이것은 다시 불편합니다.

+5

관련 질문 : http://stackoverflow.com/q/5744117/421225 – Simon

+0

@ 사이먼 당신 말이 맞아요, 아마도 누군가 합병 할 수 있을까요? – Szabolcs

+1

나는 그들을 분리 시켜서 행복하다. [Sjoerd의 질문] (http://stackoverflow.com/q/5744117/421225)는 멋진 음모와 [브렛의 멋진 의미 론적 답변]으로 인해 혼란 스럽습니다. (http://stackoverflow.com/questions/7635181/separate-hand- 수학적으로 그려진 객체 - 7640149 # 7640149) ([TomD의 통사론 답변] (http://stackoverflow.com/questions/5744117/saving-plot-annotations/5753555#5753555)과는 대조적으로) 발견. 어쨌든 두 가지 질문은 페이지의 오른쪽 열에 "링크 됨"이므로 쉽게 찾을 수 있습니다. – Simon

답변

14

한 가지 방법 : : 같은 코드의 수정

Plot[Annotation[Sin[x], "GeneratedPrimitives"], {x, 0, 10}] 

RecoverDrawing[g_Graphics] := g /. Annotation[_, "GeneratedPrimitives"] :> {} 

RecoverDrawing[<modified graphic>] 

enter image description here

+4

+1 좋은 분 브렛! 이 문제는 이전에이 문제를 반복하면서 제기 한 질문에 응답합니다 (Part를 사용하여 그래픽 구조의 특정 위치를 해킹해야하는 경우). 주석을 사용하는 것이 더 강력한 방법 인 것 같습니다. –

+2

+10 정말로 좋습니다! –

0

불행히도 내가 생각할 수있는 가장 좋은 점은 ClickPane 또는 EventHandler를 사용하여 프로그램에 이미지를 추가 할 때 bu 레코드를 그리는 것이 아니라는 점입니다. 생성 된 컨텐츠를 플래그 주석을 사용하여

DynamicModule[{pts = {}}, 
ClickPane[Dynamic[[email protected][Line[pts], PlotRange -> 1]], 
    AppendTo[pts, #] &]] 
관련 문제