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

geom_point: shape and color sourced on the same column generates two legends instead of one. #89

Open
eduardflorinescu opened this issue Nov 1, 2013 · 4 comments
Labels

Comments

@eduardflorinescu
Copy link

Shape and color sourced on the same column generates two legends instead of one which is not consistent with ggplot2.

Steps to reproduce:

from ggplot import *
print ggplot(aes(x="wt", y="mpg", color = "factor(cyl)", shape = "factor(cyl)"), data=mtcars) + \
geom_point()
plt.show(1)

Actual outcome
The resulted chart unnecessary have two legends instead of a fused one like the one in the second image
image

Expected outcome
The legend should be only one and have the colored shapes instead:
image

Legend should be similar to the exemple given in the R ggplot2 documentation
http://docs.ggplot2.org/0.9.3.1/geom_point.html

image

@glamp
Copy link
Contributor

glamp commented Nov 1, 2013

Thanks for finding this! I'm sure we'll eventually get to this one but it will most likely be a little while--still working on color scaling issues w/ facets and legends getting cut off in in IPython

@eduardflorinescu
Copy link
Author

Personally I don't need this bug fixed, but I found it out and thought to put it here. Thanks to everyone that is working on this project.

@eduardflorinescu
Copy link
Author

This is how everything looks with the latest code:
The issue still reproduces
figure_1

@has2k1
Copy link

has2k1 commented May 1, 2014

The solution to this issue should be implemented after #283 and #221.

arnfred added a commit to arnfred/ggplot that referenced this issue Jun 14, 2014
As shown in yhat#304 and
yhat#89 the current legend is drawn
once per aesthetic (outside of x and y). This behaviour creates
duplicate information when we use for example color and fill along the
same variable.

I've reworked the legend to group information per variable and display
for example one line showing both shape, color and alpha information.

The reworked legend also address: yhat#273.

New Features
- Group legend information per variable
- Implement alpha
- Better position legend (The vertical position was centered according
  to the top of the frame before)
- Fixed issue with legend overlapping
- Fixed problem with legend inventing numeric values. For numeric
  columns with less than 5 unique values, the current legend would
  interpolate them to write 5 continuous values

Things that doesn't work:
- No custom rearrangement (say, making swapping line 1 and 2 in the
  legend)
- Legend might be longer than plot. Currently it breaks in to two
  columns, but if the plot is drawn smaller then I can't see a way to
  adjust the legend to this behaviour

Changes:
- I've personally had the problem that the legend would interpolate
  between numeric values even when there were less than 5 unique values
  in the data. I've changed this behaviour so the legend puts a label
  for every value when there are less than 8. Currently the color scheme
  in this case is discrete, but I'm not convinced this is the best
  solution. I generally think distinguishing between discrete and
  continuous data types makes sense, but for some continuous cases we
  might want to use the set of values that are present in the data
  instead of interpolating. I'm unsure whether the way I've changed this
  is the right way to do it, so I welcome comments on this matter.
@arnfred arnfred mentioned this issue Jun 14, 2014
has2k1 pushed a commit to has2k1/plotnine that referenced this issue Apr 25, 2017
As shown in yhat/ggpy#304 and
yhat/ggpy#89 the current legend is drawn
once per aesthetic (outside of x and y). This behaviour creates
duplicate information when we use for example color and fill along the
same variable.

I've reworked the legend to group information per variable and display
for example one line showing both shape, color and alpha information.

The reworked legend also address: yhat/ggpy#273.

New Features
- Group legend information per variable
- Implement alpha
- Better position legend (The vertical position was centered according
  to the top of the frame before)
- Fixed issue with legend overlapping
- Fixed problem with legend inventing numeric values. For numeric
  columns with less than 5 unique values, the current legend would
  interpolate them to write 5 continuous values

Things that doesn't work:
- No custom rearrangement (say, making swapping line 1 and 2 in the
  legend)
- Legend might be longer than plot. Currently it breaks in to two
  columns, but if the plot is drawn smaller then I can't see a way to
  adjust the legend to this behaviour

Changes:
- I've personally had the problem that the legend would interpolate
  between numeric values even when there were less than 5 unique values
  in the data. I've changed this behaviour so the legend puts a label
  for every value when there are less than 8. Currently the color scheme
  in this case is discrete, but I'm not convinced this is the best
  solution. I generally think distinguishing between discrete and
  continuous data types makes sense, but for some continuous cases we
  might want to use the set of values that are present in the data
  instead of interpolating. I'm unsure whether the way I've changed this
  is the right way to do it, so I welcome comments on this matter.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants