2017-02-27 9 views
2

Wahrscheinlich eine einfache Frage:Manipulieren R plotly Legende

Versuch plotly zu verwenden, um ein Streudiagramm zu erzeugen, und die Legende anpassen. so

require(plotly) 
set.seed(1) 

my.df <- data.frame(id=LETTERS[sample(26,100,replace=T)],x=rnorm(100),y=rnorm(100),sig=runif(100,0,1),stringsAsFactors = F) 

In meinem Fall bin ich dies mit den Spaltenindizes Aufruf:

x.idx <- which(colnames(my.df) == "x") 
y.idx <- which(colnames(my.df) == "y") 
sig.idx <- which(colnames(my.df) == "sig") 
sig.name <- "p-value" 

Und ich will, was zu tun ist, die Legende Titel sig.name sein

Hier ist meine Daten und mache die Legende kleiner als die Standardgröße. Also ich versuche:

p <- plot_ly(x=~my.df[,x.idx],y=~my.df[,y.idx],color=~my.df[,sig.idx],text=~my.df$id,colors=c("darkblue","darkred")) %>% add_annotations(text=sig.name,xref="paper",yref="paper",xanchor="left",x=1,y=1,yanchor="top",legendtitle=T,showarrow=FALSE) %>% layout(legend=list(y=0.8,yanchor="top"),xaxis=list(title=colnames(my.df)[x.idx],zeroline=F),yaxis=list(title=colnames(my.df)[y.idx],zeroline=F)) 

Welche gibt mir: enter image description here

nicht genau das, was ich will.

So:

  1. Wie lösche ich die Standard-Legende Titel?

  2. Wie mache ich die Legende kleiner?

+0

Was meinst du mit Legende? Die Farbleiste oder der Text? –

Antwort

2

Sie suchen wahrscheinlich für colorbar: len und colorbar: title. enter image description here

plot_ly(type = 'scatter', 
     mode = 'markers', 
     x = ~my.df[,x.idx], 
     y = ~my.df[,y.idx], 
     color = ~my.df[,sig.idx], 
     text =~my.df$id, 
     colors = c("darkblue","darkred"), 
     marker = list(colorbar = list(len = 0.2, 
             title = sig.name) 
     ) 
)