Ho cercato di mettere insieme qualcosa che mi permetta di estrarre punti da un ListPlot per usarli in ulteriori calcoli. Il mio attuale approccio è selezionare punti con un localizzatore []. Funziona bene per la visualizzazione dei punti, ma non riesco a capire come estrarre valori numerici da un costrutto con la testa Dinamica []. Di seguito è riportato un esempio autonomo. Trascinando il localizzatore grigio, dovresti essere in grado di selezionare i punti (indicati dal localizzatore rosa e memorizzati in q
, un elenco di due elementi). Questa è la seconda riga sotto la trama. Ora vorrei passare q [[2]] a una funzione, o forse semplicemente visualizzarla. Tuttavia, Mathematica considera q
come una singola entità con la testa Dynamic
, e quindi la seconda parte è impossibile (da qui il messaggio di errore). Qualcuno può far luce su come convertire q
in un elenco normale?Convertire un costrutto dinamico [] in un elenco numerico
EuclideanDistanceMod[p1_List, p2_List, fac_: {1, 1}] /;
Length[p1] == Length[p2] :=
Plus @@ (fac.MapThread[Abs[#1 - #2]^2 &, {p1, p2}]) // Sqrt;
test1 = {{1.`, 6.340196001221532`}, {1.`,
13.78779876355869`}, {1.045`, 6.2634018978377295`}, {1.045`,
13.754947081416544`}, {1.09`, 6.178367702583522`}, {1.09`,
13.72055251752498`}, {1.135`, 1.8183153704413153`}, {1.135`,
6.082497198000075`}, {1.135`, 13.684582525399742`}, {1.18`,
1.6809452373465104`}, {1.18`, 5.971583107298081`}, {1.18`,
13.646996905469383`}, {1.225`, 1.9480537697339537`}, {1.225`,
5.838386922625636`}, {1.225`, 13.607746407088161`}, {1.27`,
2.1183174369679234`}, {1.27`, 5.669799095595362`}, {1.27`,
13.566771130126131`}, {1.315`, 2.2572975468163463`}, {1.315`,
5.444014254828522`}, {1.315`, 13.523998701347882`}, {1.36`,
2.380307009155079`}, {1.36`, 5.153024664297602`}, {1.36`,
13.479342200528283`}, {1.405`, 2.4941312539733285`}, {1.405`,
4.861423833512566`}, {1.405`, 13.432697814928654`}, {1.45`,
2.6028066447609426`}, {1.45`, 4.619367407525507`}, {1.45`,
13.383942212133244`}};
DynamicModule[{p = {1.2, 10}, q = {1.3, 11}},
q := [email protected]
[email protected][[
Ordering[{#, EuclideanDistanceMod[p, #, {1, .1}]} & /@ test1,
1, #1[[2]] < #2[[2]] &]]];
Grid[{{Show[{ListPlot[test1, Frame -> True, ImageSize -> 300],
[email protected][Dynamic[p]],
[email protected]
Locator[q, Appearance -> {Small},
Background -> Pink]}]}, {[email protected]}, {q},{q[[2]]}}]]
+1: Sono completamente perplesso. 'Dynamic' non appare come se potesse essere rimosso. Ho visto q sotto 'FullForm' e non c'è nulla da afferrare; gli interni rimangono non valutati fino a quando non viene visualizzato. Ho provato a impostare 'x = q', ma' Dynamic' è stato trasferito a causa del problema di visualizzazione. – rcollyer