使坐标系在 matplotlib 和图形工具之间一致
Make coordinate systems agree between matplotlib and graph-tool
非常方便,graph-tool.draw.graph_draw
允许您将 matplotlib Axes 对象指定为 canvas 用于绘图。不太方便,坐标系不对齐。以下脚本演示了该问题。有没有比手动反转给定的坐标更容易的解决方法?
import matplotlib
matplotlib.use('cairo')
from matplotlib import pyplot
import graph_tool.all
x = [0, 1]
y = [0, 1]
g = graph_tool.Graph()
pos = g.new_vertex_property('vector<float>')
v_0 = g.add_vertex()
v_1 = g.add_vertex()
g.add_edge(u, v)
pos[v_0] = [0,0]
pos[v_1] = [1,1]
pyplot.plot(x, y)
ax = pyplot.gca()
graph_tool.draw.graph_draw(g, pos=pos, mplfig=ax)
pyplot.savefig('flip.png')
这是一个错误。它已在当前 git 版本中得到修复。同时,您必须手动翻转坐标,使用:
x, y = ungroup_vector_property(pos, [0, 1])
y.fa *= -1
y.fa -= y.fa.min()
pos = group_vector_property([x, y])
非常方便,graph-tool.draw.graph_draw
允许您将 matplotlib Axes 对象指定为 canvas 用于绘图。不太方便,坐标系不对齐。以下脚本演示了该问题。有没有比手动反转给定的坐标更容易的解决方法?
import matplotlib
matplotlib.use('cairo')
from matplotlib import pyplot
import graph_tool.all
x = [0, 1]
y = [0, 1]
g = graph_tool.Graph()
pos = g.new_vertex_property('vector<float>')
v_0 = g.add_vertex()
v_1 = g.add_vertex()
g.add_edge(u, v)
pos[v_0] = [0,0]
pos[v_1] = [1,1]
pyplot.plot(x, y)
ax = pyplot.gca()
graph_tool.draw.graph_draw(g, pos=pos, mplfig=ax)
pyplot.savefig('flip.png')
这是一个错误。它已在当前 git 版本中得到修复。同时,您必须手动翻转坐标,使用:
x, y = ungroup_vector_property(pos, [0, 1])
y.fa *= -1
y.fa -= y.fa.min()
pos = group_vector_property([x, y])