我等待您想要的操作的更多示例,但现在我将指出,可能可以在不进行任何替换的情况下进行一类操作。被迫仅仅猜测你想要什么,就会出现一种解释。
myplot = Plot[{Sin[x], Csc[x]}, {x, 1, 10}];
Replace[myplot, {Graphics[x_List, y_List] :>
Graphics[x,
Flatten[{y,
BaseStyle -> {FontFamily -> "Helvetica", FontSize -> 20}}]]}]
Show[myplot, BaseStyle -> {FontFamily -> "Helvetica", FontSize -> 20}]
正如你所看到的,在这种情况下Replace
不需要。
解决您更新的问题,有两种不同类别的图形对象Plot
output.
函数的绘制线 (Sin[x]
, Cos[x]
)并且它们的样式被“硬编码”到Line
对象,其中Graphics
可以理解。
辅助设置如Axes -> True
, PlotLabel -> "Sine Cosecant Plot"
and AxesStyle -> Orange
被理解为Graphics
直接直接进行,无需转换,因此保留在myplot
object.
第二种设置可以在事后轻松更改,因为它们是软设置。
第一种多以某种方式进行处理。由于不同的事实,这变得复杂*Plot
函数输出不同的模式Graphics
and Plot
它本身可能会根据给定的输入给出不同的输出模式。
我不知道有任何全局方法可以重新设计所有绘图类型,如果您经常进行此类重新设计,那么保留所需的数据并简单地使用 Plot 重新生成图形可能更有意义。然而,对于基本用途,您的方法可以改进。绘制的每个函数都会创建一个Line
对象,按给定的顺序。因此,您可以使用类似的方法来完全重新设计绘图:
myplot = Plot[{Cos[x], Sin[x]}, {x, 0, 2 Pi},
PlotStyle -> {{Red, Dashing[None]}, {Green, Dashing[None]}}]
newstyles = Directive @@@
{{Green, Thickness[.02], Dashing[Tiny]},
{Thickness[Large], Red}};
i = 1;
MapAt[# /. {__, l : Line[__]} :> {newstyles[[i++]], l} &, myplot, {1, 1}]
请注意上面最后一行代码中粗斜体部分。这是位置的零件规格Line
内的物体myplot
,并且可能会改变。通常这会按原样工作,但如果您发现必须经常更改它,则应该可以使用检测其位置的功能(询问是否需要)。
图形检查器
telefunkenvf14 的评论提醒我,我疏忽了没有提及图形检查器。
虽然我个人倾向于避免大量的情节后重新设计,因为我喜欢将所有内容保留在一个地方(Plot
命令),我更喜欢对代码进行更改,这样就可以记录我的设置,而不必深入研究Graphics
对象,图形检查器直接适用。
- 双击该图。边框应从橙色变为粗灰色。
- 单击其中一条情节线。 (当您将鼠标悬停在元素上时,尖头应该会改变)
- Press Ctrl+g to open the Graphics Inspector.
- 进行所需的更改,然后关闭图形检查器。
您现在可以复制并粘贴整个图形,或直接将其分配给符号:p = <graphic>
另请参阅:http://www.wolfram.com/broadcast/screencasts/howtoeditmathematicagraphics/ http://www.wolfram.com/broadcast/screencasts/howtoeditmathematicagraphics/