有没有人想出一种方法来修改Mathematica 8中的Graph对象?特别是,如何获得右键单击图表时获得的相同功能.
一些新的图形函数冲突Combinatorica,有没有办法强迫Mathematica使用函数的内置版本?换句话说,有没有办法CompleteGraph在我Needs["Combinatorica"]输入Combinatorica版本之后获得内置的访问权限CompleteGraph?
为了澄清1,Graph上的Context Menu允许您更改GraphStyle和GraphLayout,我希望能够以编程方式更改它们.这是我发现改变Graph对象GraphStyle的一种方法
g = GridGraph[{4, 4}];
BooleanGraph[Or, g, g, GraphStyle -> "DiagramBlack"]
Run Code Online (Sandbox Code Playgroud)
但是,这会忘记原始图形的选项 VertexCoordinates
在网格图上尝试Brett的食谱
g = GridGraph[{3, 2}, ImageSize -> Tiny]
coords = PropertyValue[{g, #}, VertexCoordinates] & /@ VertexList[g];
Graph[EdgeList[g], GraphStyle -> "BasicGold",
VertexCoordinates -> coords, ImageSize -> Tiny]
Run Code Online (Sandbox Code Playgroud)
http://yaroslavvb.com/upload/save/mathematica-change-style.png
Mathematica如何在图形操作上处理图形坐标似乎存在一个错误.下面第一行置换坐标,第二行给出内部警告,可能与坐标有关.对每个顶点使用非整数顶点和显式坐标没有帮助.一种解决方案是全局存储坐标,并具有在修改后fixCoordinates重新分配正确坐标的功能Graph
VertexDelete[GridGraph[{3, 3}], 1]
NeighborhoodGraph[VertexDelete[GridGraph[{3, 3}], 1], 2]
Run Code Online (Sandbox Code Playgroud) 我想从不等式的实例中提取参数.以下不起作用,任何想法为什么以及如何解决它?
Inequality[1, Less, x, Less, 2] /. Inequality[a_, _, c_, _, e_] -> {a, c, e}
我有时遇到TreeForm中的标签因重叠而无法读取的问题.下面是一个例子,任何人都可以看到摆脱重叠的方法吗?
{{4, 5, 6}, {{{2, 4, 5, 6}, {{{1, 2, 4}, {}}, {{2, 3, 6}, {}}}}, {{4,
5, 6, 8}, {{{4, 7, 8}, {}}, {{6, 8, 9}, {}}}}}} // TreeForm
http://yaroslavvb.com/upload/treeform1.png
Belisarius的解决方案有助于重叠,但丢失工具提示,即与之比较
TreeForm[Hold[
GraphPlotHighlight[edges : {((_ -> _) | {_ -> _, _}) ...},
hl : {___} : {}, opts : OptionsPattern[]] :=
Module[{verts, coords, g, sub}, 5]]]
http://yaroslavvb.com/upload/mathematica-tooltip.png
回答更新11/12 我最终使用下面的代码(belisarius'代码带有小修正)
myTreeForm[exp_] :=
Module[{tooltipText, i},
tooltipText =
Cases[Cases[MakeBoxes[TreeForm@exp, StandardForm],
TooltipBox[x__] -> x, 7, Heads -> True],
TagBox[x__, y__] -> DisplayForm[First@{x}], …Run Code Online (Sandbox Code Playgroud) 我记得看到一个表达式来表达并评估每个匹配模式x的头部,同时保留子表达式与非匹配头部的未评估.我再也找不到这个食谱了,有谁知道这样做的正确方法?
偶尔我遇到以下情况 - 一个程序使用全局函数f[x]进行一些计算,同时另一个程序f=5将所有后续调用f[x]转换为5[x]
我知道本地化变量,但我更喜欢在开发早期使用全局变量.
我想不出将OwnValues和DownValues混合的正当理由.当上述情况发生时,有没有办法实施警告信息?
除了以下提示之外,还可以在Cell Options/Evaluation Options/CellContext下的OptionsInspector中找到默认上下文
我有listA和listB相同的大小.我做GatherBy的listA,这是重排列表.应用相同重排的优雅方法是什么listB?
例如
listA = {1, 2, 3};
listB = {a, b, c};
listA1 = GatherBy[{1, 2, 3}, OddQ];
Run Code Online (Sandbox Code Playgroud)
listB1 应该成为 {{a, c}, {b}}
更新 感谢有趣的想法,我最终做了类似于belisarius的事情.这让我想起了Python的"decorate-sort-undecorate"模式
decorated = Thread[{listA, listB}];
grouped = GatherBy[decorated, OddQ[First[#]] &];
listB1 = Map[Last, grouped, {2}]
Run Code Online (Sandbox Code Playgroud) 插入公式的标准方法是Plot什么?
我的情节如下.我希望将图表的公式很好地格式化并插入到图中.TraditionalForm看起来不错,但它把公式放在一行,而我想要一个两行分数.
Plot[{1, (\[CapitalDelta] - 1)^(\[CapitalDelta] -
1)/(\[CapitalDelta] - 2)^\[CapitalDelta]}, {\[CapitalDelta], 3, 6},
PlotRange -> {0, 4}, PlotStyle -> {Dashing[.02], Thick},
AxesLabel -> {"\[CapitalDelta]", "\[Lambda]"}]
Run Code Online (Sandbox Code Playgroud) 我正在使用依赖于SIGALRM来设置警报中断的配方 - 使用带有超时的模块"子进程 "
问题是我有多个Python脚本使用signal.ALARM进程来设置超时,并且只调用最新的警报.有什么好方法可以改善这些多个Python函数设置超时?
如何使其toStr[list]获取符号列表并将其作为字符串返回?我想a=1;toStr[{a}]给{"a"}
更新03/02:Leo的配方有效,也是为了制作一个版本,它采用序列而不是列表SetAttribute[toStr2,HoldAll];toStr2[a__]:=toStr[{a}]
在Emacs的python-mode中用常规python shell替换常规/ usr/bin/python需要什么?
基本上我有一个二进制文件/ usr/bin/mypython,它在启动python interpreter提示符之前进行一些初始化,并且出于所有交互目的,生成的解释器shell等同于/ usr/bin/python.
但是,如果我在"python-python-command"中指定这个二进制文件(在Emacs 23.3中使用python.el),我会得到"只支持Python版本> = 2.2且支持<3.0"