又一個首發:
a = Point[{0, 0}];
b = .75 Tuples[{1, -1}, 2][[{3, 1, 2, 4}]];
PieChart[
{
Button[1, (a = {Thickness[.05], Arrowheads[.1],
Arrow[[email protected]{b[[1]], {0, 0}, #}] & /@ b})],
Button[1, (a = {Thickness[.05], Arrowheads[.1],
Arrow[[email protected]{b[[2]], {0, 0}, #}] & /@ b})],
Button[1, (a = {Thickness[.05], Arrowheads[.1],
Arrow[[email protected]{b[[3]], {0, 0}, #}] & /@ b})],
Button[1, (a = {Thickness[.05], Arrowheads[.1],
Arrow[[email protected]{b[[4]], {0, 0}, #}] & /@ b})],
}
,
SectorOrigin -> {Automatic, 1},
Epilog -> [email protected]]
編輯更緊湊:
a = Point[{0, 0}];
b = .75 Tuples[{1, -1}, 2][[{3, 1, 2, 4}]];
PieChart[
ReleaseHold[Replace[Table[
List[1,
ReplaceAll[
Hold[a = {Thickness[.05], Arrowheads[.1],
Arrow[[email protected]{k, {0, 0}, #}] & /@ b}], k -> i]],
{i, b}], List -> Button, {2}, Heads -> True]]
,
SectorOrigin -> {Automatic, 1},
Epilog -> [email protected]]
大多數元素都可以在Mathematica中輕鬆找到。您可以使用'Arrow's,例如基於'BezierCurve'或'BSplineCurve's。可點擊的名稱可以通過'Appearance' - >「Frameless」''來實現。剩下的只是工作。也許圖形中箭頭的變化厚度可能難以再現。可能有必要避免使用「箭頭」,並從更基本的繪製原語構建它們。在問這個問題之前,你嘗試過什麼? –
@ SjoerdC.deVries我沒有嘗試到目前爲止。剛纔在BBC看過這個消息,認爲這對於MMA練習課來說是一個很好的問題。我會盡力去做,但要讓別人看看。特別是那些在迷霧般的星期六早晨煩悶的人。 – PlatoManiac
我認爲雖然這需要很多工作,但這不是一項太困難的任務。你需要在'EventHandler'中包裝圖形對象,點擊修改一些變量,並將整個'Graphics'放在'Dynamic'中,以便在這些變量發生變化時更新。 'HighlightGraph'對於簡化的解決方案非常有用。HighlightGraph [g,{Style [1 \ [DirectedEdge] 2,color]}]創建一個有向圖'g',然後執行'SetterBar [Dynamic [color],{Red,Green,Blue}]'''Dynamic @ ' – Szabolcs