2017-07-19 5 views
0

J'ai un tracé de polygones colorés en fonction d'une variable quantitative de l'ensemble de données coupée à certaines valeurs discrètes (0, 5, 10, 15, 20, 25). J'ai actuellement une sortie ggplot() statique qui "fonctionne" comme je l'ai prévu. A savoir, les valeurs de légende sont les valeurs de coupure (0, 5, 10, 15, 20, 25). L'intrigue statique est inférieure à -Modification des libellés de légende dans ggplotly()

Static

Cependant, quand je convertir simplement tracé statique à une parcelle interactive, les valeurs de la légende deviennent des valeurs hexadécimaux (n 54278F, # 756BB1, etc.) au lieu de la coupure valeurs (0, 5, 10, 15, 20, 25). Une capture d'écran de cette parcelle interactive est présentée ci-dessous -

Interactive

Je suis en train de déterminer un moyen de changer les étiquettes de légende dans l'intrigue interactive pour être les valeurs coupées (0, 5, 10, 15, 20, 25). Toutes les suggestions ou le soutien seraient grandement appréciés!

Ci-dessous le code que j'utilisé pour créer l'intrigue statique et interactive:

library(plotly) 
library(ggplot2) 
library(RColorBrewer) 

set.seed(1) 
x = abs(rnorm(30)) 
y = abs(rnorm(30)) 
value = runif(30, 1, 30) 

myData <- data.frame(x=x, y=y, value=value) 

cutList = c(5, 10, 15, 20, 25) 
purples <- brewer.pal(length(cutList)+1, "Purples") 
myData$valueColor <- cut(myData$value, breaks=c(0, cutList, 30), labels=rev(purples)) 

# Static plot 
sp <- ggplot(myData, aes(x=x, y=y, fill=valueColor)) + geom_polygon(stat="identity") + scale_fill_manual(labels = as.character(c(0, cutList)), values = levels(myData$valueColor), name = "Value") 

# Interactive plot 
ip <- ggplotly(sp) 

Répondre

1

étiquette en utilisant les points de coupe et utiliser scale_fill_manual pour les couleurs.

cutList = c(5, 10, 15, 20, 25) 
purples <- brewer.pal(length(cutList)+1, "Purples") 
myData$valueLab <- cut(myData$value, breaks=c(0, cutList, 30), labels=as.character(c(0, cutList))) 

# Static plot 
sp <- ggplot(myData, aes(x=x, y=y, fill=valueLab)) + geom_polygon(stat="identity") + scale_fill_manual(values = rev(purples)) 

# Interactive plot 
ip <- ggplotly(sp)