rshinyrstudiorenderingrcharts

rCharts Zeros instead of numbers in the y Axis


I get 0 values on the y Axis while plotting a discreteBarChart inside renderChart(), However, the highest value of yAxis appears (not 0) but also with some wierd format and commmas (see 2nd screenshot down named Chart Plot)

I want to plot 2 columns in rCharts, the x Axis is a character (countryname) and the yAxis is numeric (Collective_Turnover) I created this variable (Collective_Turnover) from the data, it is the sum of the Net_Turnover I tried to put as.numeric() before it, but still, getting 0 on the yAxis


data$countryname= as.character(data$countryname)

  output$top10countries <-renderChart({
    topcountries <- 
      arrange(data%>%  
                group_by(as.character(countryname)) %>% 
                summarise(
                  Collective_Turnover= sum(as.numeric(`Net turnover`))
                ), desc(Collective_Turnover))
    colnames(topcountries )[colnames(topcountries )=="as.character(countryname)"] <- "Country"

    topcountries <- subset(topcountries [1:10,], select = c(Country, Collective_Turnover))

    p <- nPlot(Collective_Turnover~Country, data = topcountries , type = "discreteBarChart", dom = "top10countries")
    p$params$width <- 1000
    p$params$height <- 200
    p$xAxis(staggerLabels = TRUE)
    # p$yAxis(axisLabel = "CollectiveTO", width = 50)
    return(p)
  })

The output of topcountries in R is a table like this:

topcountriesscreenshot

that is arranged in descending order... and the plot that i get is this: Chart Plot


Solution

  • The ticks labels are truncated because they are too long. You need to set the left margin and a padding. To get rid of the commas, use a number formatter.

    dat <- data.frame(
      Country = c("Russian", "Italy", "Spain"), 
      x = c(12748613.6, 5432101.2, 205789.7)
    )
    
    p <- nPlot(x ~ Country, data = dat, type = "discreteBarChart")
    p$yAxis(tickPadding = 15, tickFormat = "#! function(d) {return d3.format('.1')(d)} !#")
    p$chart(margin = list(left = 100))
    p
    

    enter image description here