2016-09-22 4 views
1

Ich habe ein Problem mit einigen Grundstücken in Rshiny. Ich möchte einige Informationen zur xAxis hinzufügen. Dieser Beitrag wurde bearbeitet, weil ich fast eine Lösung gefunden habe, aber wenn Sie das Original-Skript wollen, kann ich es bereitstellen. HierInformationen zu xAxis hinzufügen - r glänzend

ist ein reproduzierbares Beispiel:

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

data(citytemp) 

ui <- fluidPage(
    h1("Highcharter EXAMPLE"), 
    fluidRow(
     column(width = 8, 
       highchartOutput("hcontainer",height = "500px") 
     ), 
     selectInput("option", label = "", width = "100%", 
        choices = c("Tokyo", "NY")) 
    ) 
) 

server <- function(input, output) { 
    data <- citytemp[,c("month","tokyo","new_york")] 
    data = data[data$month%in%c("Dec","Jan","Feb","Mar"),] 
    choose_Option <- reactive({ 
     sort_option <- input$option 
     if(sort_option=="Tokyo"){ 
      data = data[order(data$tokyo),] 
     } 
     else{ 
      data = data[order(data$new_york),] 
     } 
     return(data) 
    }) 
    output$hcontainer <- renderHighchart({ 
     data = choose_Option() 
     data = data[1:3,] 


     chart <- highchart() %>% 
      hc_chart(type = "bar") %>% 
      hc_title(text = "Monthly Average Temperature for main cities") %>% 
      hc_subtitle(text = "Source: WorldClimate.com") %>% 
      hc_xAxis(categories = data$month ,      
        labels=list(
         formatter=JS("function() { 
          return 'Tokyo' + '<br>' + this.categories +'   ' + '<br>'+'NY' + '</br>'; 
         }"))) %>% 
      hc_yAxis(title = list(text = "Temperature (C)")) 

     hc <- chart %>% hc_add_series(yAxis=0,name="Tokyo",data = data$tokyo,colorByPoint=TRUE) 
     hc <- hc %>% hc_add_series(yAxis=0,name="NY",data = data$new_york,colorByPoint=TRUE)  



     return(hc) 
    }) 
} 

shinyApp(ui = ui, server = server) 

Hier ist eine Darstellung, was Ich mag würde haben:

enter image description here

Die Lösung fast funktioniert, aber ich vor zwei Problemen: 1) Wie kann ich R bitten, den Kategorienamen zu erhalten? Ich denke, dass diese Kategorie nicht funktioniert ... und 2) warum wird der lange Whitespace nicht berücksichtigt?

Lassen Sie mich wissen, wenn Sie eine Klarstellung benötigen. Vielen Dank, Best, Madzia

+1

Könnte ein Bild eines erwarteten Chart hinterlassen? Sie sollten das Format von Achsenbeschriftungen ändern oder dataLabels (Punktbeschriftungen) verwenden können. Beispielhafte Daten könnten ebenfalls hilfreich sein. –

+0

Hallo Kacper, danke für deine Nachricht - ich habe gerade den Post bearbeitet, kannst du das Bild sehen? – Madzia

+1

Wird dies nahe genug sein? http://jsfiddle.net/7kk1ku9v/2/ Es verwendet dataLabels mit Format, um Seriennamen anstelle von Standard-y-Werten anzuzeigen. –

Antwort

0

1) Sie this.key verwenden könnte eine aktuelle Kategorie zu erhalten (so Feb Jan oder Mar bei Ihren Bildern und einer Demo unten)

2) Extra-weiß Leerzeichen werden ignoriert - Sie könnten sie in einem <span> mit white-space:pre; Stil platzieren.

Zusätzlich in Bezug auf Etiketten Position in der „wanted“ Bild, könnten Sie setzen Optionen:

align: 'left', 
inside: true, 
x: -65 

... für dataLabels sie jeder Bar auf der linken Seite zu haben, wenn genügend Platz vorhanden ist (wenn nicht - auf der rechten Seite).

Demo: http://jsfiddle.net/7kk1ku9v/3/