VTK/Charts: Difference between revisions
From KitwarePublic
< VTK
Jump to navigationJump to search
(→Goals) |
|||
Line 12: | Line 12: | ||
* Possibility to extend the API to 3D charts in the future? | * Possibility to extend the API to 3D charts in the future? | ||
* Maybe real-time charting? (just-in-time visualization of data sets) | * Maybe real-time charting? (just-in-time visualization of data sets) | ||
== Unlimited Options == | |||
=== Supported Parameter Types === | |||
* Basic types (double, int, string) | |||
* vtkVariant | |||
* Data object | |||
* Pipeline output port | |||
* vtkArray | |||
* vtkAbstractArray | |||
* Data object + array name | |||
* Data object + array name + component index | |||
* Function pointer | |||
* Functor (i.e. struct type with operator()) | |||
* Lambda function (boost::lambda) | |||
* Strategies (i.e. subclass vtkDoubleParameter which has virtual method <code>double Get(vtkMark* m, int i)</code>) | |||
* Override virtual methods in mark (i.e. subclass vtkDotMark which has virtual method <code>double GetSize(int i)</code>) | |||
* Inherit from parent mark | |||
=== Parameter Storage === | |||
* Named member variables | |||
* Named member variables with import/export to name/value map | |||
* Generic name/value map | |||
<tt> | |||
class vtkMark { | |||
public: | |||
ParamType GetParameter(string key) | |||
{ return this->Parameters[key].Valid ? this->Parameters[key] : this->Parent->GetParameter(key); } | |||
void SetParameter(string key, ParamType p) | |||
{ this->Parameters[key] = p; } | |||
private: | |||
map<string, ParamType> Parameters; | |||
} | |||
</tt> | |||
* Generic name/value map with setter/getter syntactic sugar for discoverability | |||
<code> | |||
class vtkDotMark { | |||
public: | |||
ParamType GetSize() { return this->GetParameter("size"); } | |||
void SetSize(ParamType p) { this->SetParameter("size", p); } | |||
} | |||
</code> | |||
=== Other Features === | |||
* Declarative API | |||
== Further Details on API == | == Further Details on API == |
Revision as of 20:12, 24 November 2009
Goals
- Render 2D charts using OpenGL/VTK
- Scalable to large data sets
- Simple, flexible API
- Enable server side rendering of charts with VTK compositing
- Proper handling of IEEE Not-A-Number (NaN) values in plots of both experimental and simulation data.
Open Questions
- Alternate backend to produce publication quality output?
- Possibility to extend the API to 3D charts in the future?
- Maybe real-time charting? (just-in-time visualization of data sets)
Unlimited Options
Supported Parameter Types
- Basic types (double, int, string)
- vtkVariant
- Data object
- Pipeline output port
- vtkArray
- vtkAbstractArray
- Data object + array name
- Data object + array name + component index
- Function pointer
- Functor (i.e. struct type with operator())
- Lambda function (boost::lambda)
- Strategies (i.e. subclass vtkDoubleParameter which has virtual method
double Get(vtkMark* m, int i)
) - Override virtual methods in mark (i.e. subclass vtkDotMark which has virtual method
double GetSize(int i)
) - Inherit from parent mark
Parameter Storage
- Named member variables
- Named member variables with import/export to name/value map
- Generic name/value map
class vtkMark { public:
ParamType GetParameter(string key) { return this->Parameters[key].Valid ? this->Parameters[key] : this->Parent->GetParameter(key); } void SetParameter(string key, ParamType p) { this->Parameters[key] = p; }
private:
map<string, ParamType> Parameters;
}
- Generic name/value map with setter/getter syntactic sugar for discoverability
class vtkDotMark {
public:
ParamType GetSize() { return this->GetParameter("size"); }
void SetSize(ParamType p) { this->SetParameter("size", p); }
}
Other Features
- Declarative API
Further Details on API
Please see VTK/Charts/API for a discussion about the API. There is also more detail about the VTK/Charts/2DAPI and the VTK/Charts/ChartAPI along with proposed class relationships.
Chart Types
- XY plot
- Scatter
- Bar chart
- Histogram
- Stack chart
- Pie chart
- Parallel axes
- Tree map
- Bubble chart
Existing Applications/Libraries
Below is a summary of different libraries or applications that produce 2D charts and plots. Those listed either provide both screen and publication quality rendering, or just screen rendering.
Optimized for Screen Rendering
- prefuse
- tableau
- Many Eyes
- Google Chart
- Qwt
- QwtPlot3D
- QPlotter
- ggobi
- ZedGraph
- TeeChart
- Iocomp
- Scientific charting control
- ChartDirector
- Dundas
- Visifire
- core-plot
- Protoviz