You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为graph_tool绘制的图添加标题?

为graph_tool绘制的图形添加标题

当然可以给graph_tool绘制的图形添加标题,这里提供两种实用方法:

方法1:结合Matplotlib接口添加标题

graph_tool的graph_draw函数支持返回Matplotlib的轴对象,你可以直接利用Matplotlib的标题功能来实现:

修改你的代码如下:

import graph_tool as gt
import matplotlib.pyplot as plt

def draw_graph(g:gt.Graph):
  ebet = gt.centrality.betweenness(g)[1]
  pos = gt.draw.arf_layout(g)
  # 开启matplotlib模式,获取返回的轴对象
  ax = gt.draw.graph_draw(
    g,
    pos=pos,
    vertex_text=g.vertex_index,
    edge_color=ebet,
    vertex_size=gt.draw.prop_to_size(g.vertex_properties['size'], ma=50,log=False, power=1),
    # vertex_fill_color=g.vertex_properties['size'],
    output='tiny.pdf',
    matplotlib=True
  )
  # 添加自定义标题
  plt.title("我的图形标题", fontsize=14)
  plt.savefig('tiny_with_title.pdf')  # 保存带标题的最终图像

方法2:通过Cairo上下文手动绘制标题

如果不想依赖Matplotlib,可以直接操作Cairo绘图上下文来添加文本标题,灵活性更高:

import graph_tool as gt
import cairo

def draw_graph(g:gt.Graph):
  ebet = gt.centrality.betweenness(g)[1]
  pos = gt.draw.arf_layout(g)
  
  # 创建Cairo PDF绘图表面
  surface = cairo.PDFSurface('tiny_with_title.pdf', 800, 600)
  ctx = cairo.Context(surface)
  
  # 绘制图形到上下文
  gt.draw.graph_draw(
    g,
    pos=pos,
    vertex_text=g.vertex_index,
    edge_color=ebet,
    vertex_size=gt.draw.prop_to_size(g.vertex_properties['size'], ma=50,log=False, power=1),
    # vertex_fill_color=g.vertex_properties['size'],
    output_ctx=ctx,
    fit_view=True,
    ink_scale=1.0
  )
  
  # 配置标题样式并绘制
  ctx.set_source_rgb(0, 0, 0)  # 设置文本颜色为黑色
  ctx.select_font_face("Sans", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_BOLD)
  ctx.set_font_size(16)
  title = "我的图形标题"
  # 计算文本宽度,实现水平居中
  _, _, width, _, _, _ = ctx.text_extents(title)
  ctx.move_to(800/2 - width/2, 30)  # 水平居中,距离顶部30像素位置
  ctx.show_text(title)
  
  surface.finish()

两种方法各有侧重:第一种操作简单,适合熟悉Matplotlib的用户;第二种直接操作底层绘图上下文,对布局的控制更精细。

内容的提问来源于stack exchange,提问作者Alex Shroyer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 03:25:23