Feature #269

Updated by Sebastien Jacquot over 5 years ago

Here are the lists of features we need to implement in the Graphics rendering module. Most of the lists need to be expanded and/or clarified. Please feel free to complete them by adding your own notes.

h1. Common features

h2. Major structure changes

- elements and sub-elements of the plots need to have semantic data (other than graphical data). It means we need to get, in the RCP, some extra data for the plots elements from the R objects (eg. labels or frequencies for rows or columns points in CA)
- elements and sub-elements of the plots need to interact with the RCP system (listeners, components [menus, etc.], etc.). It means we need a way to link plots graphical elements with SWT extra data components of RCP editors

h2. End-user common features

- scaling and not only zooming: scaling the plots without scaling the texts and/or the elements (points, shapes, etc., TBD: depends of the target plots)
(TBD: asynchronous system for some specific modules, eg. change R query and plot output during a CA, scaling in a cartographic way)
- create a toolbar for the SWT graphical component with buttons for features (TBD: buttons/commands list )
* zoom in
* zoom out
* pan arrows
- bind controls to "standard" OS portable controls

- define OS portable shortcuts for the features (mouse and keyboard), first proposals:
* camera translation
** middle mouse button
** arrow keys
* scaling
** mouse wheel
** CTRL +, CTRL -

- be able to navigate between Graphics module plots elements and SWT components such as tables, etc. in both directions
- export plot in files (TBD; file formats)
* SVG (surely needed for having interactive plots in TXM Web Portal)
* at least one raster format (PNG ?)

h2. Common preferences

- TBD: define the level of each preference (Toolbox or RCP)
- create user preferences page for selecting background colors, elements and texts foreground colors, texts font and size and others data
TBD: others data:
* zoom/scale speed factor
* pan speed factor
* user shortcuts ? (maybe useless)

p>. right
br.

Here are the lists of specific features by module:



h1. FA

h2. Drawing area

- be able to select one or several points of the same kind in FA plane (col points OR row points) : simple click, rectangle, lasso [or via contextual menu ? see #250 too]) ;
- be able to highlight rows in FA results tables (rows info, cols info) when points are selected in FA plane ; show the highlighted rows (for example change the focus to cols info table if selected points correspond to parts) ;
- be able to define a color for contributive points to a given dimension (different colors for the different dimensions) ; the corresponding axis could be drawn in the same colour ;
- another possible use of colors : projection of the values of a given modality associated with the points. The modality can be a continuum (then a continuum should be used for colors too) or enumerative (then one choose colors with a good contrast, user can modify the choice of colors if she wants)
- size (of the point, of the label...) can be another mean for projecting ordered values of a modality (ex. size of the part, frequency of the word,...)
- be able to define a color for points linked to other points (TBD: neighbors, correlation ?), or to draw segments linking a selected point to its nearest neighbors in the complete space (the N-dimension space vs the vizualized 2D space).
- define a method to see the covered labels: be able to move the labels with the mouse ? + automatic optimisation of label positions
- filtering on cos2, more precisely on the sum of cos2 for the represented axes (quality of the representation in the current plane)
- filtering on contributions as cos2 ? One could for example keep only the most contributive points of every represented axis ; the sum of the contributions of the kept points represents a given proportion of the axis inertia (for ex. ctr sum = 0.8). Note that the filtering condition is not the same one for cos2 and for ctr.
- drawing confidence ellipses
- be able to modify original data within the FA plot (TBD: does that mean changing the lexical table through the plot ? For ex. removing a part)
- geodesic view (I think it should be another component/editor sharing some data with the CA editor)
- for selected column points :
* compute and show an information table : table of metadata values for a chosen metadata ;

- for selected points :
* compute and show specificities : if selected points are parts, show a table of specific words of this subcorpus ; if selected points are words, show a table of specific parts of this set of words ;
* change status (active vs illlustrative points)
* delete (from graphic and table)

h3. Rollover

- extra data tooltips on mouse over on elements and sub-elements (TBD)
* Row points
** label
** frequency
* Column points
** part name
** number of entities in part

h3. Contextual menus

- TBD: CA-oriented features list
- create link to others commands (TBD: commands list)
* Index
* Concordances
* Cooccurrences

h2. SWT components

h3. Tables

- be able to highlight a point or move camera to a FA point in the drawing area by interact with the tables data (TBD: contextual menus, keyboard shortcuts, etc. ? hyperlink ?)
- be able to highlight some FA plane points from an algorithm as "all individuals specific to certain variable value beyond a certain threshold"

h2. Preferences

- label position relative to its point (TBD: up, down, left, right ? This could be optimized automatically. Perhaps put the label on the opposite side of the origin.)
- rows points
* color
* size
* labels size

- columns points
* color
* size
* labels size

- transparency of label or point (should be in toolbar FA editor rather than the preferences page ?). When points are transparent, labels should get the coordinates of the point.

h2. Misc

TBD Serge:
- pouvoir sélectionner des individus ou variables pour les passer en illustratifs : déjà mentionné, oui c'est important, il faut ensuite pouvoir relancer le calcul.
- la bonne représentation d'un point dans un plan (individu ou variable) : déjà mentionné, c'est les cos2
- la contribution d'un point à un axe (individu)
(la contribution peut aussi être intéressante pour les variables) : déjà mentionné
- la spécificité d'un point par rapport à une variable : ? à voir, on a déjà les spécifs les plus fortes pour un point ligne ou colonne
- nombre de points total affichés (individu ou variable) : à gérer en lien avec le seuillage sur la qualité (et peut-être la contribution).

Bénédicte:
- affichage de séries de données, avec effet de continuité ; ex., afficher des AFC correspondant à des périodes successives, en aidant à visualiser la "trajectoire", l'arrivée ou la disparition des différents points.

h1. Dimensions

h2. Drawing area

h3. Rollover

- extra-data tooltips on mouse over parts label or plot bars ?

h3. Contextual menus

- TBD: Dimensions oriented features list.
* return the axis

- create link to others commands (TBD: commands list)
*

h1. CAH

- TBD

h1. Implementing the RCP Graphics module in way to keep the TXM Toolbox compatible with the TXM WEB Portal project

I'm still doing research on a way to do that and I'll post conclusions/questions here asap.
For now, I think the system will contain 3 groups:
- Graphics module selection
- Extern library for create charts in Java2D
- SWT component for draw the Java2D components and interact with them

First proposals:
- create a Graphics module selection system in the Toolbox (redefine the current RDevice selection system and mix it with the new selection system)
then:
1) override this selection system in RCP and propose a SWT component-oriented module (JFreeChart usage is retained for now, still need some research about it)
or:
2) ???

h1. Getting interactive plots in TXM WEB Portal

The SVG solution could have been a good way to do that, if we could inject semantic in the files. Both RSVGDevice don't write semantic data in the SVG files (other than graphical semantic data, so useless for us).

First proposals:
1) use the RCP SWT Graphics component as Applet (should be relatively easy to implement but that would screw up the portal flexibility by introducing Java plugin need)
2) use SVG as central format and inject semantic data in the file, then:
a) inject Javascript and DOM events directly in the SVG DOM (cons: that means we need to create links between the SVG DOM and GWT JS components)
b) develop/convert the RCP SWT component to GWT in way it can act with SVG files

- about the SVG files we could:
1) move JFreeChart to the Toolbox level and find a way to use it through command line for exporting SVG files
2) keep using RSVGDevice and let JFreeChart at the RCP level

Back