如何在python igraph中为顶点标签使用自定义字体?

迪恩斯

在R igraph中,有一种简单的方法可以为图形图上的顶点标签和其他文本设置自定义字体:

plot(G,vertex.label.family="DINPro")

但是,正如我所看到的,vertex_label_family参数在python igraph中不可用。我花了一些时间找到能够设置标签字体的解决方法,因此我将在此处发布解决方案。我想知道是否有更优雅或更简单的解决方案。首先,我尝试context.select_font_face()在igraph图对象的上下文中调用cairo ,但是可悲的是,该draw()函数igraph.drawing.graph.DefaultGraphDrawer()在每个对象中都将其覆盖plot.redraw()

lo = graph.layout_fruchterman_reingold()
sf = cairo.PDFSurface("test.pdf",1280,1280)
bx = igraph.drawing.utils.BoundingBox(10, 10, 1260, 1260)
plot = igraph.plot(graph,layout=lo,target=sf,bbox=bx)
plot._ctx.select_font_face("DINPro", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
plot.redraw()
plot.save()

所以这行不通。我将发布一个简单的解决方案。

迪恩斯

我可以通过用DefaultGraphDrawer新的替换来设置顶点标签的字体,该类仅与原来的两行不同。我只是igraph/drawing/graph.py从python发行版的site-packages目录中复制了文件,然后删除了除以外的所有其他类DefaultDraphDrawer导入之后,我添加了一行以导入AbstractCairoGraphDrawer,并修改了__all__[]列表:

from igraph.drawing.graph import AbstractCairoGraphDrawer
__all__ = ["DefaultGraphDrawerFFsupport"]

然后我重命名了DefaultGraphDrawer该类,修改了它的字体选择部分:

class DefaultGraphDrawerFFsupport(AbstractCairoGraphDrawer):
    ...
    def draw(...):
        ...
        fontFamily = graph.font if hasattr(graph, "font") else "sans-serif"
        context.select_font_face(fontFamily, cairo.FONT_SLANT_NORMAL, \
             cairo.FONT_WEIGHT_NORMAL)
        ...
    ...

我将此文件(ig_drawing.py)放在模块的目录中,然后将其导入。我可以通过将修改后的类作为函数的drawing_factory参数来设置任何字体plot()

from ig_drawing import *
lo = graph.layout_fruchterman_reingold()
sf = cairo.PDFSurface("test.pdf",1280,1280)
bx = igraph.drawing.utils.BoundingBox(10, 10, 1260, 1260)
df = igraph.drawing.graph.DefaultGraphDrawer(ctx, bx)
graph.font = "DINPro"
plot = graph.plot(graph,layout=lo,target=sf,bbox=bx,vertex_label=graph.vs["label"],drawer_factory=DefaultGraphDrawerFFsupport)
a.plot.save()

如果您未设置graph.font,则使用“ sans-serif”。而且,如果您提供的字体名称不存在,那么也不会出现错误消息,它会退回到系统的默认sans字体。

看起来默认的“ sans-serif”字体是在igraph中硬编码的,无论是在使用cairo曲面还是svg的绘图功能中。有没有更简单的方法来更改此设置?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

如何在Android中为整个应用程序设置自定义字体?

来自分类常见问题

如何在NavigationView中为项目设置自定义字体?

来自分类Dev

如何在SublimeText中使用自定义字体

来自分类Dev

如何在iOS标签栏中使用自定义字体

来自分类Dev

如何在网站中使用自定义字体

来自分类Dev

如何在iOS中使用.ttc自定义字体

来自分类Dev

如何在Java Web App中创建自定义标签?如何在JSP中使用自定义标签?

来自分类Dev

如何在TCPDF中添加自定义字体?

来自分类Dev

如何在RecyclerView中为TextView设置自定义字体?

来自分类Dev

如何在Yii2表单字段中为标签添加自定义类?

来自分类Dev

如何在标头中添加自定义标签以使WordPress中的字体变大?

来自分类Dev

如何在CSS中安装自定义字体

来自分类Dev

Amazon Neptune:如何使用tinkerpop / gremlinpython包在Python中创建自定义顶点ID?

来自分类Dev

如何在Firefox中为svg的text元素导入自定义字体?

来自分类Dev

如何在python docx中为段落应用自定义(专有)字体?

来自分类Dev

如何在Python Turtle中使用自定义本地字体?

来自分类Dev

如何在TKINTER上使用自定义字体

来自分类Dev

如何在Ghostscript / PostScript中使用自定义字体?

来自分类Dev

Android如何在画布中设置自定义字体?

来自分类Dev

如何在自定义tableviewcelll中设置标签的自定义字体?

来自分类Dev

如何在python igraph中为顶点标签使用自定义字体?

来自分类Dev

如何在R中的ggnet图中添加自定义顶点标签?

来自分类Dev

如何在Java Web App中创建自定义标签?如何在JSP中使用自定义标签?

来自分类Dev

如何在RecyclerView中为TextView设置自定义字体?

来自分类Dev

如何在ckeditor中定义自定义html标签

来自分类Dev

如何在 Xcode playgrounds 中实现自定义字体

来自分类Dev

如何在棒棒糖中为整个应用程序设置自定义字体

来自分类Dev

如何在 prestashop 中添加自定义字体?

来自分类Dev

如何在swift 4中将html字符串设置为标签时使用常规和粗体字体设置自定义字体?

Related 相关文章

  1. 1

    如何在Android中为整个应用程序设置自定义字体?

  2. 2

    如何在NavigationView中为项目设置自定义字体?

  3. 3

    如何在SublimeText中使用自定义字体

  4. 4

    如何在iOS标签栏中使用自定义字体

  5. 5

    如何在网站中使用自定义字体

  6. 6

    如何在iOS中使用.ttc自定义字体

  7. 7

    如何在Java Web App中创建自定义标签?如何在JSP中使用自定义标签?

  8. 8

    如何在TCPDF中添加自定义字体?

  9. 9

    如何在RecyclerView中为TextView设置自定义字体?

  10. 10

    如何在Yii2表单字段中为标签添加自定义类?

  11. 11

    如何在标头中添加自定义标签以使WordPress中的字体变大?

  12. 12

    如何在CSS中安装自定义字体

  13. 13

    Amazon Neptune:如何使用tinkerpop / gremlinpython包在Python中创建自定义顶点ID?

  14. 14

    如何在Firefox中为svg的text元素导入自定义字体?

  15. 15

    如何在python docx中为段落应用自定义(专有)字体?

  16. 16

    如何在Python Turtle中使用自定义本地字体?

  17. 17

    如何在TKINTER上使用自定义字体

  18. 18

    如何在Ghostscript / PostScript中使用自定义字体?

  19. 19

    Android如何在画布中设置自定义字体?

  20. 20

    如何在自定义tableviewcelll中设置标签的自定义字体?

  21. 21

    如何在python igraph中为顶点标签使用自定义字体?

  22. 22

    如何在R中的ggnet图中添加自定义顶点标签?

  23. 23

    如何在Java Web App中创建自定义标签?如何在JSP中使用自定义标签?

  24. 24

    如何在RecyclerView中为TextView设置自定义字体?

  25. 25

    如何在ckeditor中定义自定义html标签

  26. 26

    如何在 Xcode playgrounds 中实现自定义字体

  27. 27

    如何在棒棒糖中为整个应用程序设置自定义字体

  28. 28

    如何在 prestashop 中添加自定义字体?

  29. 29

    如何在swift 4中将html字符串设置为标签时使用常规和粗体字体设置自定义字体?

热门标签

归档