将 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
问题
我正在编写一个脚本来在 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