[vtkusers] vtkChartLegend Position in Python

Slaughter, Andrew E andrew.slaughter at inl.gov
Thu Oct 8 15:58:04 EDT 2015


On Thu, Oct 8, 2015 at 1:27 PM, Cory Quammen <cory.quammen at kitware.com>
wrote:

> Well shoot, that member function must not be wrapped.
>
> Instead, try this
>
> legend = chart.GetLegend()
> legend.SetHorizontalAlignment(vtk.vtkChartLegend.CUSTOM)
> legend.SetVerticalAlignment(vtk.vtkChartLegend.CUSTOM)
> legend.SetPoint(0, 20)
>

This causes the legend to move to the lower left in the window, SetPoint
does nothing.

Using the Set(Horizontal/Vertical)Alignment methods move the legend to the
various points within the
plot window. For example, the following places it where I was hoping to
move the legend.
legend.SetHorizontalAlignment(vtk.vtkChartLegend.LEFT)
legend.SetVerticalAlignment(vtk.vtkChartLegend.TOP)

However, this SetPoint method does not seem to change anything. Perhaps I
am just not understanding how the bounding box works for the object. I was
thinking that SetPoint would locate the corner of the legend box at the
specified point and that the Set(Horizontal/Vertical)Alignment methods
indicate how this box aligns to the point.

The behavior seems to be that the legend has a bounding box equal to the
chart axis dimensions and that the alignment methods alter the placement of
the legend box within this larger bounding box.


>
HTH,
> Cory
>
>
> On Thu, Oct 8, 2015 at 3:00 PM, Slaughter, Andrew E <
> andrew.slaughter at inl.gov> wrote:
>
>> Yes, that function does not exist.
>>
>> On Thu, Oct 8, 2015 at 12:45 PM, Cory Quammen <cory.quammen at kitware.com>
>> wrote:
>>
>>> Hi Andrew,
>>>
>>> Have you tried vtkChartXY::SetLegendPosition(const vtkRectf & rect), e.g.
>>>
>>> rect = vtkRectf(0, 20, ?, ?)
>>> char.SetLegendPosition(rect)
>>>
>>> HTH,
>>> Cory
>>>
>>> On Thu, Oct 8, 2015 at 2:33 PM, Slaughter, Andrew E <
>>> andrew.slaughter at inl.gov> wrote:
>>>
>>>> I am writing a script to build some line charts in VTK, but I am having
>>>> difficulty repositioning a vtkChartLegend object.
>>>>
>>>> The python script below will create a plot. I would like to reposition
>>>> the legend to the upper left-hand side of the chart so as to not interfere
>>>> with the line plot. However, I am not able to make the legend move. I would
>>>> appreciate any help to get the legend to re-position?
>>>>
>>>> I am running OSX (Yosemite) with Python 2.7.6 and VTK 6.3.
>>>>
>>>>
>>>> #!/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()
>>>>
>>>> _______________________________________________
>>>> Powered by www.kitware.com
>>>>
>>>> Visit other Kitware open-source projects at
>>>> http://www.kitware.com/opensource/opensource.html
>>>>
>>>> Please keep messages on-topic and check the VTK FAQ at:
>>>> http://www.vtk.org/Wiki/VTK_FAQ
>>>>
>>>> Search the list archives at: http://markmail.org/search/?q=vtkusers
>>>>
>>>> Follow this link to subscribe/unsubscribe:
>>>> http://public.kitware.com/mailman/listinfo/vtkusers
>>>>
>>>>
>>>
>>>
>>> --
>>> Cory Quammen
>>> R&D Engineer
>>> Kitware, Inc.
>>>
>>
>>
>
>
> --
> Cory Quammen
> R&D Engineer
> Kitware, Inc.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/vtkusers/attachments/20151008/99c3c602/attachment.html>


More information about the vtkusers mailing list