如何为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
相关产品推荐
相关产品推荐

