在 Mathematica 中为所有 2D 图启用框架

Enable Frames for All 2D Plots in Mathematica

要将所有 2D 图设置为具有选项 Frame->True,我将以下内容添加到我的 "init.m":

(SetOptions[#, Frame -> True]&)/@{Plot,ListPlot,ListLinePlot,LogPlot,LogLogPlot,LogLinearPlot};

这看起来很尴尬,我从来没有在列表中列出所有不同的情节。

有没有simpler/better方法让我设置这些选项整体

谢谢!

这会找到名称中包含 PlotFrame 选项的每个内置函数:

 Select[Symbol /@ Names["System`*Plot*"] , 
         MemberQ[Options[#]   , Frame -> _] & ]
{ArrayPlot, BodePlot, CommunityGraphPlot, ContourPlot, \
DateListLogPlot, DateListPlot, DensityPlot, DiscretePlot, GraphPlot, \
LayeredGraphPlot, LineIntegralConvolutionPlot, ListContourPlot, \
ListCurvePathPlot, ListDensityPlot, ListLineIntegralConvolutionPlot, \
ListLinePlot, ListLogLinearPlot, ListLogLogPlot, ListLogPlot, \
ListPlot, ListPolarPlot, ListStreamDensityPlot, ListStreamPlot, \
ListVectorDensityPlot, ListVectorPlot, LogLinearPlot, LogLogPlot, \
LogPlot, MatrixPlot, NicholsPlot, NyquistPlot, ParametricPlot, Plot, \
PolarPlot, ProbabilityPlot, ProbabilityScalePlot, QuantilePlot, \
RegionPlot, ReliefPlot, RootLocusPlot, SingularValuePlot, \
StreamDensityPlot, StreamPlot, TreePlot, VectorDensityPlot, \
VectorPlot, WaveletListPlot, WaveletMatrixPlot}

因此您可以简单地使用您的方法:

 SetOptions[#, Frame -> True]&/@Select[Symbol /@ Names["System`*Plot*"],
   MemberQ[Options[#]   , Frame -> _] & ];

如果你想扩展到名称中没有 Plot 的东西,你需要使用 Quiet,因为当你请求选项时,一些符号会抛出警告:

      Select[Symbol /@ Names["System`*"] , 
             MemberQ[Quiet@Options[#]   , Frame -> _] & ]

公平警告我不知道更改所有这些东西的默认值的后果..