将 vtkChartLegend 置于 Python

Position vtkChartLegend in Python

问题

我正在编写一个脚本来在 VTK 中构建一些折线图,但是我很难重新定位 vtkChartLegend 对象。

下面的 python 脚本将创建所示的绘图。我想将图例重新定位到图表的左上角,以免干扰线图。但是,我无法使图例移动。如果能帮助我重新定位图例,我将不胜感激?

我是 运行 OSX (Yosemite) Python 2.7.6 和 VTK 6.3。

VTK 输出

Python 脚本

#!/usr/bin/env python
import vtk

# Num. points
n = 10

# Create some data
x = vtk.vtkFloatArray()
y = vtk.vtkFloatArray()
x.SetNumberOfTuples(n)
x.SetName('x')
y.SetNumberOfTuples(n)
y.SetName('y')
for i in range(10):
  x.SetValue(i, float(i))
  y.SetValue(i, float(2*i))

# Create the table and line
table = vtk.vtkTable()
table.AddColumn(x)
table.AddColumn(y)

line = vtk.vtkPlotLine()
line.SetInputData(table, 0, 1)

# Create chart
chart = vtk.vtkChartXY()
chart.AddPlot(line)

# Create view
view = vtk.vtkContextActor()
view.GetScene().AddItem(chart)

# Renderer
renderer = vtk.vtkRenderer()
renderer.SetBackground(1,1,1)
renderer.AddViewProp(view)

# Legend
chart.SetShowLegend(True)
legend = chart.GetLegend()
legend.SetPoint(0, 20) # This doesn't seem to do anything

# Window
window = vtk.vtkRenderWindow()
window.AddRenderer(renderer)

# Interactor
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(window)

# Render
window.Render()
renderer.Render()
interactor.Start()

我收到了 vtkusers 邮件列表的回复,解决了我的问题。

legend.SetHorizontalAlignment(vtk.vtkChartLegend.CUSTOM)
legend.SetVerticalAlignment(vtk.vtkChartLegend.CUSTOM)
legend.SetPoint(200, 200) # position in window coordinates