Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ENH] Radviz: new widget #2480

Merged
merged 6 commits into from
Dec 21, 2017
Merged

[ENH] Radviz: new widget #2480

merged 6 commits into from
Dec 21, 2017

Conversation

jerneju
Copy link
Contributor

@jerneju jerneju commented Jul 19, 2017

Issue

Radviz widget wanted. Radviz widget is available in Orange 2 but not in Orange 3.

Description of changes

New widget in Orange 3. This is much simpler widget than one in Orange 2. Radviz in Orange2 has too many settings.

Includes
  • Code changes
  • Tests
  • Documentation

@codecov-io
Copy link

codecov-io commented Jul 19, 2017

Codecov Report

Merging #2480 into master will decrease coverage by 0.27%.
The diff coverage is 62.76%.

@@            Coverage Diff            @@
##           master   #2480      +/-   ##
=========================================
- Coverage   81.98%   81.7%   -0.28%     
=========================================
  Files         323     324       +1     
  Lines       54915   55593     +678     
=========================================
+ Hits        45022   45424     +402     
- Misses       9893   10169     +276

@janezd
Copy link
Contributor

janezd commented Sep 10, 2017

Crashes and errors

  • The widget crashes if given a domain without continuous attributes

  • If no attributes are shown (e.g. after clicking None), the widget crashes when the mouse is moved into the plot.

  • If I try to display only a single attribute, I get a warning "Points with missing 'x' or 'y' are not displayed". The user can't know what this means. However, points are shown, but at the coordinate of the sole anchor. Instead, they should be spread between (0, 0) and the anchor. (Since the coordinates are computed as sums over anchors, it's strange that is doesn't work like this already).

  • Vizrank searches only for projections of the first three attributes (or, say, first seven if we look for projections with seven attributes).

Appearance

  • The distances between the two arrows for moving the anchor should be independent of the graph size. They shouldn't be squashed together if the graph is small or moved too far from each other if the graph is large or zoomed in.

  • Make the circle black or dark grey, possibly a bit thicker.

  • Don't show x and y coordinates in tooltips.

  • Related to the above point and elsewhere: the user should never been told about some 'x' and 'y' (this is the widget's internal thing) -- except in the output signal.

Usability

  • 'Show all data on mouse hover' does not appear to have any effect.

  • Show class density does not work if the color is set by continuous attribute. This may be OK, but disable the checkbox in this case.

  • Moving anchors clears the selection. It shouldn't. Also, keep the selection when changing the set of displayed attributes.

  • If the data already includes attributes 'x' or 'y', the output data should rename the columns. For instance, if we plot a radviz of the 'glass' data set and output the projection into a table, we get two attributes named y. Perhaps the attributes should be named radviz-x and radviz-y (or radviz-x-1, radviz-y-1 and so forth if radviz-x already exists). I believe we already have a method for smart renaming of attributes in such cases.

@janezd
Copy link
Contributor

janezd commented Sep 10, 2017

This bug is probably more general and also appears in other widgets: set color to a different attribute than shape. You get this.

screen shot 2017-09-09 at 17 27 30

@jerneju
Copy link
Contributor Author

jerneju commented Sep 11, 2017

@janezd: Thank you for all the comments.

I think that color shape error was fixed in #2487 and this PR has not been rebased yet.

@jerneju jerneju changed the title [WIP][ENH] Radviz: new widget [WIP][ENH] RadViz: new widget Oct 11, 2017
@jerneju jerneju changed the title [WIP][ENH] RadViz: new widget [WIP][ENH] Radviz: new widget Nov 16, 2017
add circle and points around
add circle points labels
fix Inputs/Outputs
data validation
aspect ratio = 1 (circle, not ellipse)
commit selection and selection groups
hide axis
fix divide
max attrs, displayed box height
use old point on the circle
move points on a circle
fix commit
icon added
do not show main axis when there is no data
script fix
filter
on mouse hover larger circle
point labels fix
view box clear fix
@jerneju jerneju changed the title [WIP][ENH] Radviz: new widget [ENH] Radviz: new widget Dec 11, 2017
@lanzagar
Copy link
Contributor

  • Class should not be in displayed axes by default (use first 5 features?, and class as color)
  • Class density has similar problems as in Linear Projection (not scaled after change, moving anchors refreshes correctly)
  • Why limit vizrank to 4+ features? Make the minimum 3. And...
  • ... change vizrank to evaluate all combinations UP TO the selected number of vars
  • At least 2 features HAS->HAVE to be chosen
  • Discrete color variable has to be selected -> Categorical
  • The circle is a bit pixelated

For next PR:

  • we should support regression data in vizrank
  • we should think about improving vizrank by first ranking 3-var combinations and then using that for constructing and evaluationg 4-var comb. etc

Copy link
Contributor

@lanzagar lanzagar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Documentation fixes and suggestions

Description
-----------

Radviz ([1]_) is a neat non-linear multi-dimensional visualization
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove "neat"

-----------

Radviz ([1]_) is a neat non-linear multi-dimensional visualization
technique that can display data on three or more attributes in a 2-dimensional
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

data defined by three or more variables


Radviz ([1]_) is a neat non-linear multi-dimensional visualization
technique that can display data on three or more attributes in a 2-dimensional
projection. The visualized attributes are presented as anchor points equally
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

visualized variables

points inside the circle, with their positions determined by a metaphor from
physics: each point is held in place with springs that are attached at the
other end to the attribute anchors. The stiffness of each spring is
proportional to the value of the corresponding attribute and the point ends up
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

variable

other end to the attribute anchors. The stiffness of each spring is
proportional to the value of the corresponding attribute and the point ends up
at the position where the spring forces are in equilibrium. Prior to
visualization, attribute values are scaled to lie between 0 and 1. Data
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

variable values

intelligent data visualization (VizRank, see [3]_) and interface for explorative
data analysis - selection of data points in visualization. Just like in
:ref:`Scatter Plot` widget, intelligent visualization can be used to find a set
of attributes that would result in an interesting visualization. For now, this
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

set of variables

data analysis - selection of data points in visualization. Just like in
:ref:`Scatter Plot` widget, intelligent visualization can be used to find a set
of attributes that would result in an interesting visualization. For now, this
works only with class-labeled data set, where interesting visualizations are
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

with a class-labeled

:ref:`Scatter Plot` widget, intelligent visualization can be used to find a set
of attributes that would result in an interesting visualization. For now, this
works only with class-labeled data set, where interesting visualizations are
those that well separate data instances of different class. Radviz graph above
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

classes

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Radviz graph above

works only with class-labeled data set, where interesting visualizations are
those that well separate data instances of different class. Radviz graph above
is according to this definition an example of a very good visualization,
while the one below - where we show an VizRank's interface (:obj:`VizRank` button in
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the one below is not.
The extra sentence can IMO be omitted, if not add it separately (otherwise hard to read).

the data instances of the different class, making the visualization interesting
and potentially informative.

.. image:: images/Radviz-Brown.png
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This image is not added in this PR!

works only with a class-labeled data set, where interesting visualizations are
those that well separate data instances of different classes. The Radviz graph above
is according to this definition an example of a very good visualization,
while the one below is not - where we show an VizRank's interface (:obj:`VizRank` button in
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Above, below... there is only one image!?

* circle
* message
* density
* VizRank: maximum number of features
* classes not as default as selected
* use first 5 features
* do not use plotdata.circle
* VizRank: fix combinations
@jerneju jerneju added this to the 3.9 milestone Dec 20, 2017
@lanzagar lanzagar merged commit fc10a77 into biolab:master Dec 21, 2017
@lanzagar
Copy link
Contributor

Merged.
For next PR: vizrank needs a minor fix (here and in linear projection) - when running, changing the number of vars should be disabled (like in mosaic).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants