2016-07-04 11 views
0

Ich muss eine Legende zu einem Kreisdiagramm mit einem Highcharts-Paket für R auf einer glänzenden App (Highcharter, Rcharts, was auch immer) hinzufügen.Hinzufügen einer Legende zu einem Tortendiagramm mit Highcharter oder Rcharts

Ex. Code

library("shiny") 
library("highcharter") 

data(citytemp) 

ui <- fluidPage(
    h1("Highcharter Demo"), 
    fluidRow(
    column(width = 4, class = "panel", 
      selectInput("type", label = "Type", width = "100%", 
         choices = c("line", "column", "bar", "spline")), 
      selectInput("stacked", label = "Stacked", width = "100%", 
         choices = c(FALSE, "normal", "percent")), 
      selectInput("theme", label = "Theme", width = "100%", 
         choices = c(FALSE, "fivethirtyeight", "economist", 
            "darkunica", "gridlight", "sandsignika", 
            "null", "handdrwran", "chalk") 
      ) 
    ), 
    column(width = 8, 
      highchartOutput("hcontainer",height = "500px") 
    ) 
) 
) 

server = function(input, output) { 

    output$hcontainer <- renderHighchart({ 

    hc <- hc_demo() %>% 
     hc_rm_series("Berlin") %>% 
     hc_chart(type = 'pie') 

    if (input$stacked != FALSE) { 
     hc <- hc %>% 
     hc_plotOptions(showInLegend=TRUE,dataLabels=FALSE) 
    } 
    hc 

    }) 

} 

shinyApp(ui = ui, server = server) 

Der Code läuft ein crappy Beispiel eines Kreisdiagramms, und egal wo ich mich sehe nicht ein Beispiel eines highcharts Kreisdiagramm mit Legenden finden.

Versuche, es zu beheben sind:

hc_legend (enabled = TRUE) < - nicht funktioniert, macht keine Änderung.

hc_plotOptions (showInLegend = TRUE, dataLabels = FALSE) < - Wieder keine Änderung

Rcharts mit ähnlichen Versuchen verwenden, sie beide gescheitert, ich wurde dann hoffnungslos verloren für highcharts durch Quellcode suchen

Mit ähnlichen Funktionen war ich in der Lage, Highchart-Tortendiagramme mit Legenden in einem typischen JS-Format zu erstellen, indem ich eine der beiden obigen Lösungen verwendete. Hat jemand eine vernünftige Lösung für dieses Problem? Möglicherweise eine Verbindung zu einer anständigen Ressource, um es herauszufinden?

aktuelle JS Beispiel von Highcharts mit Legende, schamlos von offiziellen Highcharts Website gerissen.

$(function() { 
 

 
    $(document).ready(function() { 
 

 
     // Build the chart 
 
     $('#container').highcharts({ 
 
      chart: { 
 
       plotBackgroundColor: null, 
 
       plotBorderWidth: null, 
 
       plotShadow: false, 
 
       type: 'pie' 
 
      }, 
 
      title: { 
 
       text: 'Browser market shares January, 2015 to May, 2015' 
 
      }, 
 
      tooltip: { 
 
       pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>' 
 
      }, 
 
      plotOptions: { 
 
       pie: { 
 
        allowPointSelect: true, 
 
        cursor: 'pointer', 
 
        showInLegend: true 
 
       } 
 
      }, 
 
      series: [{ 
 
       name: 'Brands', 
 
       colorByPoint: true, 
 
       data: [{ 
 
        name: 'Microsoft Internet Explorer', 
 
        y: 56.33 
 
       }, { 
 
        name: 'Chrome', 
 
        y: 24.03, 
 
        sliced: true, 
 
        selected: true 
 
       }, { 
 
        name: 'Firefox', 
 
        y: 10.38 
 
       }, { 
 
        name: 'Safari', 
 
        y: 4.77 
 
       }, { 
 
        name: 'Opera', 
 
        y: 0.91 
 
       }, { 
 
        name: 'Proprietary or Undetectable', 
 
        y: 0.2 
 
       }] 
 
      }] 
 
     }); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.highcharts.com/highcharts.js"></script> 
 
<script src="https://code.highcharts.com/modules/exporting.js"></script> 
 

 
<div id="container" style="min-width: 310px; height: 400px; max-width: 600px; margin: 0 auto"></div>

+0

Sie können versuchen, Ihre eigene HTML-Legende vorzubereiten, wie hier: http://jsfiddle.net/N3KAC/1/ –

+0

@SebastianBochan Ich werde Sie wissen lassen, wie es geht. Ich könnte das in R oder glänzend einbauen. – Edge363

+0

Sorry, ich bin nicht vertraut mit den R-Edelsteinen etc;) –

Antwort

4

Zunächst einmal in Ihrem Beispiel die hc_demo() ist ein Liniendiagramm Beispiel, so ist es nicht gut nur funktionieren wird durch die Art des Diagramms aufgrund der Änderung von Daten nicht codiert als erforderlich für ein Tortendiagramm (y und name Werte).

Hier ist ein rohes Beispiel. Wie Sie im JavaScript-Beispiel gezeigt haben, müssen Sie nur erzwingen, dass die Legende angezeigt wird, da bei Tortendiagrammen der Standardwert false ist. Dies wird erreicht mit plotOptions -> pie -> showInLegend = TRUE.

library(highcharter) 
highchart() %>% 
    hc_chart(type = "pie") %>% 
    hc_plotOptions(
    series = list(showInLegend = TRUE) 
) %>% 
    hc_add_series(data = list(
    list(y = 3, name = "cat 1"), 
    list(y = 4, name = "cat 2") 
    ) 
) 

Schließlich empfehle ich Ihnen, überprüfen Sie replicating highcharts demos in highcharter.

+1

Schönes, übersichtliches Beispiel. – Uwe

+0

Danke. Entschuldigung für meine Grammatikfehler. – jbkunst

Verwandte Themen