2017-09-29 7 views

Antwort

0

Ja, hier ist es. Die erste Figur ist was ich will und die zweite ist was ich getan habe. Die zwei Achsen sind invertiert, aber es ist nicht wichtig. Nun würde Ich mag die beiden Legenden ziehen:

  1. eine mit einem Gradienten von Farbe, die zu den Farben der Kreise (Slot ‚Color‘ in meinem Datenrahmen Beispiel) entspricht
  2. man mit den verschiedenen Größen, wenn Kreise (Wert sind in Schlitz 'Count' der Datenrahmen Beispiel)

What I would like to draw

What I have done

die da taframe ich zum Beispiel verwendet wird, ist der folgende:

SO <- data.frame(Description=c("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"), 
      Ratio = c(0.22, 0.14, 0.14, 0.14, 0.14, 0.10, 0.10, 0.08, 0.06, 0.06, 0.06), 
      Color = c(31, 20, 20, 13, 13, 12, 7, 13, 7, 6, 5), 
      Count = c(11, 7, 7, 7, 7, 5, 5, 4, 3, 3, 3)) 

die Funktion, die ich für die zweite Handlung geschrieben ist folgende:

nRes <- nrow(SO) 
SO <- SO[order(SO$Ratio, decreasing=TRUE),] 
SO <- SO[seq(1:nRes),] 

colfunc <- colorRampPalette(c("red","royalblue")) 
nbColors <- 5 

pal <- colfunc(nbColors) 
t <- SO$Color 
d <- (max(t) - min(t))/nbColors 
base <- seq(from=min(t), to=max(t), by = d) 
tmpList <- lapply(t, function(x){ 
if (x == min(t)){ ind <- 1} 
else {ind <- which(x > base)[length(which(x > base))]} 
}) 

myColorsIndex <- unlist(tmpList) 

df <- data.frame(x=c(0:(nRes-1)), 
       y=SO$Ratio, 
       z=SO$Count, 
       color=pal[myColorsIndex], 
       colorSegment=pal[myColorsIndex], 
       Color = SO$Color, 
       name = SO$Description) 


highchart() %>% 
hc_chart(type = "bubble") %>% 
hc_add_series(df) %>% 
hc_legend(enabled = FALSE) %>% 
hc_xAxis(type = "category", categories = df$name) %>% 
hc_yAxis(title = list(text = "Ratio")) 

Vielen Dank für jede Hilfe

+0

Highcharts unterstützt standardmäßig nicht die Farbachse für Blasenreihen (nur Heatmaps und Maps). Die Kreise (Zählungslegende) werden überhaupt nicht unterstützt. Sie sollten also beide Legenden manuell erstellen. –

Verwandte Themen