2016-12-14 2 views
2

So bin ich mit ggplotly eine gestapelte Fläche Grundstück Rendering und das ist, was oben zeigt:ggplotly Rendering-Probleme aufgrund zu viele Datenpunkte

enter image description here

Das Problem ist ich habe eine benutzerdefinierte Tooltip wurde hinzugefügt mit dieser Methode:

library(data.table) 
library(ggplot2) 
library(plotly) 

Values1 <- rep(10, 10) 
Values2 <- rep(20, 10) 
X <- rep(seq(1, 10),2) 
df <- data.frame(Values1=Values1, Values2=Values2) 
df <- melt(df) 
df2 <- data.frame(X=X, Label=df$variable, Value=df$value) 

Plot <- ggplot(data=df2, aes(x=X, y=Value, fill=Label, text = paste("Value:", Value))) + 
geom_area(position='stack') 
ggplotly(Plot, tooltip = c("text", "x", "fill")) 

Dieser Beispielcode nicht neu erstellen offensichtlich nicht das Problem, sondern einfach zeigt, wie ich gezwungen in meinen eigenen Tooltip Werten. Meine tatsächlichen Daten haben 9500 Datenpunkte über das gestapelte Flächendiagramm. Wenn ich die QuickInfos für benutzerdefinierten Text lösche, werden die Plots gut dargestellt. Die Tooltips sind immer noch auf dem Chart, und ich kann sagen, dass alles dort ist, wo es sein sollte, die Bereiche füllen sich nicht richtig.

Sie können dieses Problem beheben? Der Code hängt für eine Weile, also nehme ich an, es ist kein grafisches Problem mit meinem PC, sondern ein Problem mit dem tatsächlichen Rendering-Prozess in plotly.

Edit:

Ich habe das Problem zu text = paste("Value:", Value) verengt. Wenn ich den Code auf nur text=Value ändere, macht es gut.

Das Problem ist jetzt der Tooltip dumm aussieht, wie es lesen würde:

_value_ 
X: _X_ 
Label: _label_ 

, wenn ich es lesen wollen:

Value: _value_ 
X: _x_ 
Label: _label_ 

Wer weiß, wie dieses Problem beheben?

Edit2: Noch keine Lösung für das Problem.

Antwort

0

Stellt sich heraus, ggplot2 hat eine Label-Funktion für geom_text() integriert, die plotly viel effizienter nutzen kann.

Plot <- ggplot(data=df2, aes(x=X, y=Value, fill=Label, label = paste("Value:", Value))) + 
geom_area(position='stack') 
ggplotly(Plot, tooltip = c("label", "x", "fill")) 

Zusammengefasst in dem aes() Mapping ändern text-label und tooltip = "label" in der ggplotly() Funktion angeben.