plotly / plotly/plotly.R

plotly ignores scale_fill_gradient2

Ouverte
#2,073 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
R
Étoiles
2.7k
Forks
641
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Thank you for writing and maintaining plotly!

When making a scatterplot, I like to specify pch = 21 to print an outline around points. This helps distinguish points when they are close together. When I use this plotting scheme, ggplot2 gives the expected output, but plotly ignores the aesthetics supplied by scale_fill_gradient2() and gives the error number of items to replace is not a multiple of replacement length. I believe this issue is similar to https://github.com/plotly/plotly.R/issues/1149.

# R v4.0.5
library(plotly) # v 4.9.4.1
library(ggplot2) # v 3.3.3

p <- ggplot(data = wdat, mapping = aes(x = Age, y = as.numeric(ABV))) +
  geom_jitter(mapping = aes(fill = Score), size = 2.5, pch = 21) +
  scale_fill_gradient2(low = "#0008ff",
                       midpoint = mean(wdat$Score),
                       mid = "purple",
                       high = "#ff0000") +
  scale_y_continuous(name = "% ABV",
                     limits = c(40, 70),
                     breaks = seq(from = 40, 70, 5)) +
  theme_classic()

p + ggtitle("ggplot2")

ggplotly(p + ggtitle("plotly"))

ggplot2
plotly

If I switch my mapping aesthetic to color with pch = 19 and specify a gradient with scale_color_gradient2(), then ggplot2 and plotly give the same output without error. However, the desired outlines are lost.

p <- ggplot(data = wdat, mapping = aes(x = Age, y = as.numeric(ABV))) +
  geom_jitter(mapping = aes(color = Score), size = 2.5, pch = 19) +
  scale_color_gradient2(low = "#0008ff",
                       midpoint = mean(wdat$Score),
                       mid = "purple",
                       high = "#ff0000") +
  scale_y_continuous(name = "% ABV",
                     limits = c(40, 70),
                     breaks = seq(from = 40, 70, 5)) +
  theme_classic()

p + ggtitle("ggplot2")

ggplotly(p + ggtitle("plotly"))

ggplot2b
plotlyb

Here is my scheme for downloading the dataset, in case you want to troubleshoot with the same data:

library(dplyr) # v 1.0.5
library(gsheet) # v 0.4.5

url <- "https://docs.google.com/spreadsheets/d/1geSFmGKWhoSzoSblQQK6fDzWSujY-MQ9w2b3VNbTxZk"

wdat <- gsheet::construct_download_url(url = url) %>%
  gsheet::gsheet2tbl(url = .) %>%
  mutate(ABV = gsub("%","",ABV) %>%
           as.numeric() %>%
           round(., 3) %>%
           format(., nsmall = 1)) %>%
  na.omit()

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Exécutez l’exemple R fourni et comparez les sorties de ggplot2 et ggplotly pour pch = 21 avec scale_fill_gradient2(). Commencez par le chemin de conversion de ggplotly et suivez la manière dont fill et les contours des points sont gérés ; le travail est terminé lorsque l’exemple ne génère plus d’erreur, conserve le dégradé et préserve les contours.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
r
Domaine
data-visualization
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.