Graph[] 切断 Mathematica 中的顶点标签

发布于 2024-11-05 15:00:22 字数 411 浏览 0 评论 0原文

Graph[] 在 Mathematica 中倾向于切断顶点标签。我正在寻找一个可靠的解决方法。

示例:

Graph[{1 -> 2, 2 -> 3, 3 -> 1}, VertexLabels -> "Name"]

Graph[] cuts off the label '2'

我目前的解决方法:

SetOptions[Graph, ImagePadding -> 12]

这并不可靠,因为 ImagePadding需要根据标签大小手动调整。

Graph[] has a tendency to cut off vertex labels in Mathematica. I am looking for a robust workaround.

Example:

Graph[{1 -> 2, 2 -> 3, 3 -> 1}, VertexLabels -> "Name"]

Graph[] cuts off the label '2'

My present workaround:

SetOptions[Graph, ImagePadding -> 12]

This is not robust because the value of ImagePadding needs to be manually adjusted depending on the label size.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

|煩躁 2024-11-12 15:00:22

显然,在 Graph 对象上使用 FullGraphics 会修复出于显示目的的剪裁,但会牺牲交互性。

根据下面的评论,Show[] 也可以工作,并且避免修改图形。

Apparently using FullGraphics on the Graph object will fix the clipping for the purpose of display, at the expense of interactivity.

Per the comment below, Show[] works as well, and avoids modifying the graphics.

沉鱼一梦 2024-11-12 15:00:22

这里有两种可能的解决方法。

放大顶点大小并将标签放置在顶点内。当然,这也取决于标签的长度,但对于较短的标签,它效果很好,而上面的示例会剪掉顶点 1 的任何超过一个字符的标签。

例如:

Table[Graph[{1 -> 2, 2 -> 3, 3 -> 1}, VertexSize -> 0.3, 
    VertexLabels -> Table[i -> 
       Placed["vertex" <> ToString[i], p], {i, 3}],
    VertexShapeFunction -> "Square", PlotLabel -> p], 
 {p, {Left, Top, Right, Bottom, Center}}]

使用工具提示来存储标签而不是显示它们在图形上。 [编辑:中心可能看起来最好,然后如果需要,您可以通过在字符串中放入 \n 来包装标签,但同样,取决于标签长度。]

例如:

Graph[{1 -> 2, 2 -> 3, 3 -> 1}, VertexLabels -> Placed["Name", Tooltip]]

虽然这会阻止您看到所有同时添加标签,您永远不会有任何剪辑。

Here are two possible workarounds.

Enlarge the vertex size and place the labels within the vertex. Of course, this also depends on the length of the labels, but for shortish labels it works well, whereas your example above clips off any label of more than one character for vertex 1.

ex:

Table[Graph[{1 -> 2, 2 -> 3, 3 -> 1}, VertexSize -> 0.3, 
    VertexLabels -> Table[i -> 
       Placed["vertex" <> ToString[i], p], {i, 3}],
    VertexShapeFunction -> "Square", PlotLabel -> p], 
 {p, {Left, Top, Right, Bottom, Center}}]

Use tooltips to store the labels instead of displaying them on the graphic. [Edit: Center probably looks the best, and then you can wrap labels by putting \n in your string if you need to, but again, depends on the label length.]

ex:

Graph[{1 -> 2, 2 -> 3, 3 -> 1}, VertexLabels -> Placed["Name", Tooltip]]

While this stops you from being able to see all the labels at the same time, you never have any clipping.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文