2016-07-12 14 views
0

So verwende ich Plotly in Shiny, um ein Balkendiagramm zu erstellen. Allerdings sind die x-Etiketten sind nicht eindeutig zum Beispiel (Hund zweimal):Namen Argument Plotly Barplot

Lassen Sie die df sein:

x  y 
1  Dog 
2  Cat 
3  Dog 
3  Ant 
4  Bee 

ich alle Zeilen aufgetragen werden möchten, aber dies wird nicht wegen der wiederholten Variable arbeiten Hund in der x-Säule:

p = plot_ly(df, x = df[,2], y = df[,1], type = "bar", marker = list(color = toRGB("blue"))) 
p 

So von ich denke immer vorbei an dieses tun so etwas wie: ich bin in der Lage, alle 5 Reihen zu zeichnen, indem das Argument x zu entfernen. Dann möchte ich in der Lage sein, diese Namen separat zu ändern, um die x-Spaltenvariablen zu füllen.

p = plot_ly(df, y = x, type = "bar", marker = list(color = toRGB("blue"))) 
p 

Wie ändern Sie manuell die x-Etiketten in Plotly Barplot?

Danke

Antwort

2

Geradlinig offizielle Methode:

Verwenden Sie die tickmode, tickvals und ticktext Argumente in layout für xaxis:

library(plotly) 
plot_ly(df, y = x, type = "bar", 
     marker = list(color = toRGB("blue"))) %>% 
     layout(xaxis = list(tickmode = "array", 
          tickvals = 0:4, 
          ticktext = c("Dog", "Cat", "Dog", "Ant", "Bee"))) 

Ich bin nicht sicher, wie würde gut y = x in Der obige Befehl wird in anderen Plots verallgemeinert. Daher empfehle ich diesen Ansatz:

# change the y labels (I assigned "a", "b" etc.) 
df$y <- letters[1:nrow(df)] 


df %>% plot_ly(x = y, y = x, type = "bar", 
       marker = list(color = toRGB("blue"))) %>% 
       layout(xaxis = list(tickmode = "array", 
            tickvals = c("a", "b", "c", "d", "e"), 
            ticktext = c("Dog", "Cat", "Dog", "Ant", "Bee"))) 

Kurz Hack:

einfach ein Leerzeichen am Ende des zweiten Auftreten des Hundes hinzu:

df$y <- as.character(df$y) 
df[3,2] <- "Dog " 

Sie können dann Ihre erste Handlung verwenden Befehl:

plot_ly(df, x = df[,2], y = df[,1], type = "bar", marker = list(color = toRGB("blue"))) 

Ich überprüfte Plots für beide Ansätze, und sie sehen gleich aus. Offensichtlich ist Ihre reale Anwendung nicht so einfach und der Hack wird wahrscheinlich nicht durchführbar sein.

Plus, können Sie immer ggplot2 verwenden und dann Plots machen interaktiv mit plotly::ggplotly

+0

Brilliant, mit dem ersten Weg und es funktioniert gut. Vielen Dank. – user6578927