相关疑难解决方法(0)

GraphPlots的大小一致

更新10/27:我已经在答案中提出了实现一致规模的详细步骤.基本上对于每个Graphics对象,您需要将所有填充/边距修复为0并手动指定plotRange和imageSize,使得1)plotRange包含所有图形2)imageSize = scale*plotRange

现在仍然确定1)如何完全通用,给出了一个适用于由点和粗线组成的图形的解决方案(AbsoluteThickness)


我在VertexRenderingFunction和"Ve​​rtexCoordinates"中使用"Inset"来保证图形子图之间的一致外观.使用"Inset"将这些子图绘制为另一个图的顶点.有两个问题,一个是图形周围没有裁剪得到的框(即,一个顶点的图形仍然放在一个大框中),另一个是尺寸之间有奇怪的变化(你可以看到一个框是垂直的) .任何人都能看到解决这些问题的方法吗?

这与之前关于如何保持顶点大小看起来相同的问题有关,虽然Michael Pilat建议使用Inset可以使顶点渲染保持相同的比例,但总体规模可能不同.例如,在左侧分支上,由顶点2,3组成的图形相对于顶部图形中的"2,3"子图进行拉伸,即使我使用绝对顶点定位

http://yaroslavvb.com/upload/bad-graph.png

(*utilities*)intersect[a_, b_] := Select[a, MemberQ[b, #] &];
induced[s_] := Select[edges, #~intersect~s == # &];
Needs["GraphUtilities`"];
subgraphs[
   verts_] := (gr = 
    Rule @@@ Select[edges, (Intersection[#, verts] == #) &];
   Sort /@ WeakComponents[gr~Join~(# -> # & /@ verts)]);

(*graph*)
gname = {"Grid", {3, 3}};
edges = GraphData[gname, "EdgeIndices"];
nodes = Union[Flatten[edges]];
AppendTo[edges, #] & /@ ({#, #} & /@ nodes);
vcoords = Thread[nodes -> GraphData[gname, "VertexCoordinates"]];

(*decompose*)
edgesOuter = {}; …
Run Code Online (Sandbox Code Playgroud)

wolfram-mathematica

9
推荐指数
1
解决办法
3417
查看次数

标签 统计

wolfram-mathematica ×1