Wolfram mathematica 如何加速使用自定义记号显示图形的动态过程?

Wolfram mathematica 如何加速使用自定义记号显示图形的动态过程?,wolfram-mathematica,Wolfram Mathematica,以下内容改编自真实世界的代码: ticks = Join[ Table[{i, Style[i, 10, Background -> White], {.04, 0}}, {i, 0, 20, 1}], Table[{i, Null, {.01, 0}}, {i, 0, 20, 0.1}], Table[{i, Null, {.025, 0}}, {i, 0, 20, 0.5}] ]; loc = {1, 1}; LocatorPane[ Dynami

以下内容改编自真实世界的代码:

ticks = Join[
   Table[{i, Style[i, 10, Background -> White], {.04, 0}}, {i, 0, 20, 
     1}],
   Table[{i, Null, {.01, 0}}, {i, 0, 20, 0.1}],
   Table[{i, Null, {.025, 0}}, {i, 0, 20, 0.5}]
   ];
loc = {1, 1};
LocatorPane[
 Dynamic[loc, loc[[2]] = #[[2]]; &],
 Dynamic@Show[
   Graphics[{Dashed, 
     Line[{{loc[[1]] - 0.5, loc[[2]]}, {0, loc[[2]]}}]}],
   ImageSize -> 300, PlotRange -> {{-10, 10}, {0, 20}}, 
   Axes -> {False, True}, AxesOrigin -> {0, 0}, 
   Ticks -> {Automatic, ticks}
   ]]
我遇到的问题是,当我使用自定义标记时,更新(移动定位器)会比使用自动标记(
ticks->{automatic,automatic}
)慢得多。我怎样才能避免我认为是一段时间


(我确实需要
Dynamic@Show[…]
用于此代码示例中未显示的其他更新原因)。

作为移动
动态
内部的示例:

ticks = Join[
   Table[{i, Style[i, 10, Background -> White], {.04, 0}}, {i, 0, 20, 
     1}], Table[{i, Null, {.01, 0}}, {i, 0, 20, 0.1}], 
   Table[{i, Null, {.025, 0}}, {i, 0, 20, 0.5}]];
loc = {1, 1};
LocatorPane[Dynamic[loc, loc[[2]] = #[[2]]; &], 
 Show[Graphics[
   Dynamic@{Dashed, Line[{{loc[[1]] - 3, loc[[2]]}, {3, loc[[2]]}}]}],
   ImageSize -> 300, PlotRange -> {{-10, 10}, {0, 20}}, 
  Axes -> {False, True}, AxesOrigin -> {0, 0}, 
  Ticks -> {Automatic, ticks}]]

如果不了解更多关于程序其余部分的信息,我将帮不上什么忙。

请提供有关
Dynamic@Show
程序的一部分。您可以很好地渲染一组
记号
,然后覆盖
图形
。根据您尝试执行的操作,您还可以在
图形
中移动
动态
显示[图形[动态]@{虚线,
你能给出一个更完整的例子,说明为什么你需要
动态
显示
之外吗?正如其他人所提到的,如果你能将
动态
进一步推到里面,你就有可能得到一个更具响应性的图形。我有一个函数返回一个图形对象,我也是这样做的:Show[Graphics[…],myFunction[loc]]显示的替代方法是使用First等提取图形的各个部分并手动构建一个新的部分。特别是如果图形没有更改,在动态情况下,这可能会快得多。我有一个返回图形对象的函数,所以我会:Show[Graphics[…],myFunction[loc]]。是否有安全的方法删除元素的图形标题,以便在元素之间添加动态?@P.Fonseca您可以使用
myFunction[loc]/.graphics[e\u]:>graphics[Dynamic[e]]
而不仅仅是
myFunction[loc]