VTK  9.4.20241221
vtkScatterPlotMatrix.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2// SPDX-License-Identifier: BSD-3-Clause
3
17#ifndef vtkScatterPlotMatrix_h
18#define vtkScatterPlotMatrix_h
19
20#include "vtkChartMatrix.h"
21#include "vtkChartsCoreModule.h" // For export macro
22#include "vtkColor.h" // For member function return
23#include "vtkNew.h" // For ivars
24#include "vtkSmartPointer.h" // For ivars
25#include "vtkStdString.h" // For ivars
26#include "vtkWeakPointer.h" // For currentPainter
27#include "vtkWrappingHints.h" // For VTK_MARSHALAUTO
28
29VTK_ABI_NAMESPACE_BEGIN
30class vtkStringArray;
31class vtkTable;
32class vtkAxis;
34class vtkTextProperty;
35class vtkTooltipItem;
37
38class VTKCHARTSCORE_EXPORT VTK_MARSHALAUTO vtkScatterPlotMatrix : public vtkChartMatrix
39{
40public:
41 enum
42 {
46 NOPLOT
47 };
48
50 void PrintSelf(ostream& os, vtkIndent indent) override;
51
56
60 void Update() override;
61
65 bool Paint(vtkContext2D* painter) override;
66
67 void SetScene(vtkContextScene* scene) override;
68
74 virtual bool SetActivePlot(const vtkVector2i& position);
75
79 void SetSize(const vtkVector2i& size) override;
80
85
91
96 virtual void SetInput(vtkTable* table);
97
101 void SetColumnVisibility(const vtkStdString& name, bool visible);
102
107 void InsertVisibleColumn(const vtkStdString& name, int index);
108
113
118 void SetColumnVisibilityAll(bool visible);
119
124
128 virtual void SetVisibleColumns(vtkStringArray* visColumns);
129
134 virtual void SetNumberOfBins(int numberOfBins);
135
140 virtual int GetNumberOfBins() const { return this->NumberOfBins; }
141
145 void SetPlotColor(int plotType, const vtkColor4ub& color);
146
150 void SetPlotMarkerStyle(int plotType, int style);
151
155 void SetPlotMarkerSize(int plotType, float size);
156
160 bool Hit(const vtkContextMouseEvent& mouse) override;
161
165 bool MouseMoveEvent(const vtkContextMouseEvent& mouse) override;
166
170 bool MouseButtonPressEvent(const vtkContextMouseEvent& mouse) override;
171
176
178
182 int GetPlotType(const vtkVector2i& pos);
183 int GetPlotType(int row, int column);
185
187
190 void SetTitle(const vtkStdString& title);
193
195
201
203
208 void SetGridVisibility(int plotType, bool visible);
209 bool GetGridVisibility(int plotType);
211
213
217 void SetBackgroundColor(int plotType, const vtkColor4ub& color);
220
222
226 void SetAxisColor(int plotType, const vtkColor4ub& color);
229
231
235 void SetGridColor(int plotType, const vtkColor4ub& color);
238
240
245 void SetAxisLabelVisibility(int plotType, bool visible);
246 bool GetAxisLabelVisibility(int plotType);
248
250
254 void SetAxisLabelProperties(int plotType, vtkTextProperty* prop);
257
259
263 void SetAxisLabelNotation(int plotType, int notation);
264 int GetAxisLabelNotation(int plotType);
266
268
272 void SetAxisLabelPrecision(int plotType, int precision);
273 int GetAxisLabelPrecision(int plotType);
275
277
281 void SetTooltipNotation(int plotType, int notation);
282 void SetTooltipPrecision(int plotType, int precision);
283 int GetTooltipNotation(int plotType);
284 int GetTooltipPrecision(int plotType);
286
291
296
301
306
308
314
316
322
327
331 void UpdateChartSettings(int plotType);
332
334
339 virtual void SetSelectionMode(int);
340 vtkGetMacro(SelectionMode, int);
342
347
352
357 void SetNumberOfFrames(int frames);
358
364
369
375 bool AddAnimationPath(const vtkVector2i& move);
376
381
386
391
396 virtual void AdvanceAnimation();
397
402
403protected:
406
411
416
418
422 void AxisRangeForwarderCallback(vtkObject*, unsigned long, void*);
424
429 void BigChartSelectionCallback(vtkObject*, unsigned long, void*);
430
436 virtual void UpdateAnimationPath(const vtkVector2i& newActivePos);
437
442 virtual void StartAnimation(vtkRenderWindowInteractor* interactor);
443
447 static void ProcessEvents(
448 vtkObject* caller, unsigned long event, void* clientData, void* callerData);
449
453 virtual void AddSupplementaryPlot(vtkChart* vtkNotUsed(chart), int vtkNotUsed(plotType),
454 vtkStdString vtkNotUsed(row), vtkStdString vtkNotUsed(column), int vtkNotUsed(plotCorner) = 0)
455 {
456 }
457
458 // The position of the active plot (defaults to 0, 1).
460
461 // A flag to show if the ActivePlot vector is valid or not
463
464 // Weakly owned input data for the scatter plot matrix.
466
467 // Strongly owned internal data for the column visibility.
469
470 // The number of bins in the histograms.
472
473 // The title of the scatter plot matrix.
476
477 // The mode when the chart is doing selection.
479
480 // How many frames should animations consist of, 0 means no transitions.
482
483 // A flag to know if we are animating the scatter plot along an animation path
485
486private:
488 void operator=(const vtkScatterPlotMatrix&) = delete;
489
490 class PIMPL;
491 PIMPL* Private;
492 friend class PIMPL;
493
494 vtkWeakPointer<vtkContext2D> CurrentPainter;
495 vtkMTimeType LayoutUpdatedTime;
496
497 // Go through the process of calculating axis ranges, etc...
498 void UpdateAxes();
499 void ApplyAxisSetting(vtkChart* chart, const vtkStdString& x, const vtkStdString& y);
500};
501
502VTK_ABI_NAMESPACE_END
503#endif // vtkScatterPlotMatrix_h
takes care of drawing 2D axes
Definition vtkAxis.h:171
container for a matrix of charts.
Factory class for drawing 2D charts.
Definition vtkChart.h:151
Class for drawing 2D primitives to a graphical context.
data structure to represent mouse events.
Provides a 2D scene for vtkContextItem objects.
a simple class to control print indentation
Definition vtkIndent.h:108
Allocate and hold a VTK object.
Definition vtkNew.h:167
abstract base class for most VTK objects
Definition vtkObject.h:162
platform-independent render window interaction including picking and frame rate control.
container for a matrix of charts.
void AxisRangeForwarderCallback(vtkObject *, unsigned long, void *)
Attach axis range listener so we can forward to dependent axes in matrix.
void SetGridVisibility(int plotType, bool visible)
Sets whether or not the grid for the given axis is visible given a plot type, which refers to vtkScat...
void UpdateChartSettings(int plotType)
Update charts based on settings given the plot type.
int GetAxisLabelNotation(int plotType)
Sets the axis label notation for the axes given a plot type, which refers to vtkScatterPlotMatrix::{S...
vtkColor4ub GetScatterPlotSelectedActiveColor()
Set the scatter plot selected active chart background color.
virtual void SetInput(vtkTable *table)
Set the input table for the scatter plot matrix.
virtual vtkChart * GetMainChart()
Get the main plot (the one in the top-right of the matrix.
virtual vtkStringArray * GetVisibleColumns()
Get a list of the columns, and the order in which they are displayed.
virtual bool SetActivePlot(const vtkVector2i &position)
Set the active plot, the one that will be displayed in the top-right.
void UpdateLayout()
Internal helper to do the layout of the charts in the scatter plot matrix.
void SetAxisLabelProperties(int plotType, vtkTextProperty *prop)
Set/get the text property for the axis labels of the given plot type, possible types are vtkScatterPl...
bool GetColumnVisibility(const vtkStdString &name)
Get the visibility of the specified column.
vtkTextProperty * GetAxisLabelProperties(int plotType)
Set/get the text property for the axis labels of the given plot type, possible types are vtkScatterPl...
bool Hit(const vtkContextMouseEvent &mouse) override
Return true if the supplied x, y coordinate is inside the item.
int GetAxisLabelPrecision(int plotType)
Sets the axis label precision for the axes given a plot type, which refers to vtkScatterPlotMatrix::{...
void SetPlotMarkerStyle(int plotType, int style)
Sets the marker style for the specified plotType.
void Update() override
Perform any updates to the item that may be necessary before rendering.
virtual void AdvanceAnimation()
Advance the animation in response to the timer events.
void SetScene(vtkContextScene *scene) override
Set the vtkContextScene for the item, always set for an item in a scene.
vtkStringArray * GetIndexedLabels() const
Get the indexed labels array.
void SetTitleProperties(vtkTextProperty *prop)
Set/get the text properties for the chart title, i.e.
void SetScatterPlotSelectedRowColumnColor(const vtkColor4ub &color)
Set the scatter plot selected row/column charts' background color.
vtkColor4ub GetBackgroundColor(int plotType)
Sets the background color for the chart given a plot type, which refers to vtkScatterPlotMatrix::{SCA...
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
virtual void SetNumberOfBins(int numberOfBins)
Set the number of bins in the histograms along the central diagonal of the scatter plot matrix.
virtual void UpdateAnimationPath(const vtkVector2i &newActivePos)
Given a new position for the active plot, calculate a an animation path from the old active plot to t...
static void ProcessEvents(vtkObject *caller, unsigned long event, void *clientData, void *callerData)
Process events and dispatch to the appropriate member functions.
void SetAxisLabelVisibility(int plotType, bool visible)
Sets whether or not the labels for the axes are visible, given a plot type, which refers to vtkScatte...
vtkStdString GetColumnName(int column)
Get the column name for the supplied index.
bool Paint(vtkContext2D *painter) override
Paint event for the chart matrix.
void InsertVisibleColumn(const vtkStdString &name, int index)
Insert the specified column at the index position of the visible columns.
void SetBackgroundColor(int plotType, const vtkColor4ub &color)
Sets the background color for the chart given a plot type, which refers to vtkScatterPlotMatrix::{SCA...
void SetAxisColor(int plotType, const vtkColor4ub &color)
Sets the color for the axes given a plot type, which refers to vtkScatterPlotMatrix::{SCATTERPLOT,...
bool GetGridVisibility(int plotType)
Sets whether or not the grid for the given axis is visible given a plot type, which refers to vtkScat...
void SetAxisLabelPrecision(int plotType, int precision)
Sets the axis label precision for the axes given a plot type, which refers to vtkScatterPlotMatrix::{...
void SetSize(const vtkVector2i &size) override
Reset ActivePlotSet flag and call superclass method.
void ClearAnimationPath()
Clear the animation path.
int GetNumberOfFrames()
Get the number of animation frames in each transition.
bool BeginAnimationPath(vtkRenderWindowInteractor *interactor)
Trigger the animation of the scatter plot matrix to begin.
bool MouseButtonPressEvent(const vtkContextMouseEvent &mouse) override
Mouse button down event.
virtual void SetVisibleColumns(vtkStringArray *visColumns)
Set the list of visible columns, and the order in which they will be displayed.
vtkTooltipItem * GetTooltip() const
Get the vtkTooltipItem object that will be displayed by the active chart.
void UpdateSettings()
Convenient method to update all the chart settings.
void SetPlotMarkerSize(int plotType, float size)
Sets the marker size for the specified plotType.
virtual void StartAnimation(vtkRenderWindowInteractor *interactor)
Given the render window interactor, start animation of the animation path calculated above.
vtkIdType GetNumberOfAnimationPathElements()
Get the number of elements (transitions) in the animation path.
void SetScatterPlotSelectedActiveColor(const vtkColor4ub &color)
Set the scatter plot selected active chart background color.
vtkSmartPointer< vtkTable > Input
void ResizeBigChart()
Compute and set big chart resize.
void SetTooltipNotation(int plotType, int notation)
Set chart's tooltip notation and precision, given a plot type, which refers to vtkScatterPlotMatrix::...
int GetPlotType(int row, int column)
Returns the type of the plot at the given position.
void SetIndexedLabels(vtkStringArray *labels)
Set indexed labels array.
vtkStdString GetTitle()
Set/get the scatter plot title.
vtkAnnotationLink * GetAnnotationLink()
Get the AnnotationLink for the scatter plot matrix, this gives you access to the currently selected p...
void SetPlotColor(int plotType, const vtkColor4ub &color)
Set the color for the specified plotType.
vtkColor4ub GetScatterPlotSelectedRowColumnColor()
Set the scatter plot selected row/column charts' background color.
virtual int GetNumberOfBins() const
Get the number of bins the histograms along the central diagonal scatter plot matrix.
void SetTooltip(vtkTooltipItem *tooltip)
Set the vtkTooltipItem object that will be displayed by the active chart.
~vtkScatterPlotMatrix() override
bool MouseMoveEvent(const vtkContextMouseEvent &mouse) override
Mouse move event.
void BigChartSelectionCallback(vtkObject *, unsigned long, void *)
The callback function when SelectionChangedEvent is invoked from the Big chart.
void SetColumnVisibility(const vtkStdString &name, bool visible)
Set the visibility of the specified column.
vtkColor4ub GetAxisColor(int plotType)
Sets the color for the axes given a plot type, which refers to vtkScatterPlotMatrix::{SCATTERPLOT,...
int GetPlotType(const vtkVector2i &pos)
Returns the type of the plot at the given position.
void SetGridColor(int plotType, const vtkColor4ub &color)
Sets the color for the axes given a plot type, which refers to vtkScatterPlotMatrix::{SCATTERPLOT,...
static vtkScatterPlotMatrix * New()
Creates a new object.
void SetColumnVisibilityAll(bool visible)
Set the visibility of all columns (true will make them all visible, false will remove all visible col...
bool AddAnimationPath(const vtkVector2i &move)
Add a move to the animation path.
void SetTitle(const vtkStdString &title)
Set/get the scatter plot title.
vtkVector2i GetAnimationPathElement(vtkIdType i)
Get the element specified from the animation path.
virtual vtkVector2i GetActivePlot()
Get the position of the active plot.
void AttachAxisRangeListener(vtkAxis *)
Attach axis range listener so we can forward to dependent axes in matrix.
virtual void AddSupplementaryPlot(vtkChart *vtkNotUsed(chart), int vtkNotUsed(plotType), vtkStdString vtkNotUsed(row), vtkStdString vtkNotUsed(column), int vtkNotUsed(plotCorner)=0)
Called when drawing a chart, does nothing at this level.
void SetNumberOfFrames(int frames)
Set the number of animation frames in each transition.
vtkTextProperty * GetTitleProperties()
Set/get the text properties for the chart title, i.e.
void SetAxisLabelNotation(int plotType, int notation)
Sets the axis label notation for the axes given a plot type, which refers to vtkScatterPlotMatrix::{S...
vtkSmartPointer< vtkTextProperty > TitleProperties
bool MouseButtonReleaseEvent(const vtkContextMouseEvent &mouse) override
Mouse button release event.
void SetTooltipPrecision(int plotType, int precision)
Set chart's tooltip notation and precision, given a plot type, which refers to vtkScatterPlotMatrix::...
bool GetAxisLabelVisibility(int plotType)
Sets whether or not the labels for the axes are visible, given a plot type, which refers to vtkScatte...
int GetTooltipNotation(int plotType)
Set chart's tooltip notation and precision, given a plot type, which refers to vtkScatterPlotMatrix::...
vtkStdString GetRowName(int row)
Get the column name for the supplied index.
int GetTooltipPrecision(int plotType)
Set chart's tooltip notation and precision, given a plot type, which refers to vtkScatterPlotMatrix::...
vtkNew< vtkStringArray > VisibleColumns
virtual void SetSelectionMode(int)
Set/get the Selection Mode that will be used by the chart while doing selection.
vtkColor4ub GetGridColor(int plotType)
Sets the color for the axes given a plot type, which refers to vtkScatterPlotMatrix::{SCATTERPLOT,...
Hold a reference to a vtkObjectBase instance.
Wrapper around std::string to keep symbols short.
a vtkAbstractArray subclass for strings
A table, which contains similar-typed columns of data.
Definition vtkTable.h:169
represent text properties.
takes care of drawing 2D axes
Some derived classes for the different vectors commonly used.
Definition vtkVector.h:440
a weak reference to a vtkObject.
int vtkIdType
Definition vtkType.h:315
vtkTypeUInt32 vtkMTimeType
Definition vtkType.h:270
#define VTK_MARSHALAUTO