Предупреждение: ошибка в hist.default: некоторые 'x' не учитываются; может быть, «перерывы» не охватывают диапазон «х» - PullRequest
0 голосов
/ 12 ноября 2018

Я хочу составить гистограмму из: числа криптовалют с заданной ценой.Я хотел, чтобы частота по оси Y была изменена с помощью ползунка bin: 1-50, потому что я использую 50 криптовалют с этим вызовом API.По оси абсцисс должны быть цены с такими интервалами, как: 1000000, 1100000, 1200000, 1300000 ... и т. Д., А также количество криптовалют в этих интервалах.Я делаю запрос в Coinmarket Open API и беру у JSON Total Supply вот так:

library(shiny)
library(jsonlite)
fetchjson <- fromJSON("https://api.coinmarketcap.com/v1/ticker/?limit=50")



# Define server logic required to draw a histogram

# Define server logic required to draw a histogram ----
server <- function(input, output) {

  # Histogram of the Old Faithful Geyser Data ----
  # with requested number of bins
  # This expression that generates a histogram is wrapped in a call
  # to renderPlot to indicate that:
  #
  # 1. It is "reactive" and therefore should be automatically
  #    re-executed when inputs (input$bins) change
  # 2. Its output type is a plot
  output$distPlot <- renderPlot({

    x    <- as.double( fetchjson$total_supply)
    bins <- seq(as.integer(min(x)), .Machine$integer.max, by = 1000)
    #barplot(table(fetchjson$total_supply)) 
    hist(x, breaks = bins)
    #col = "#75AADB", border = "white",
    #main = "Number of currencies with some Total Supply"
  })

}

Вот отсортированные данные (as.double, потому что jsonlite преобразует их в строки):

> sort(as.double(fetchjson$total_supply))
 [1]      1000000      5214419      8437465      8798633     16562199     17371487     17437911     17453125
 [9]     53252246     56869592     59117338    100000000    100000000    101028884    103143260    105961236
[17]    127276552    133248289    140245398    156756875    157911504    190799315    273685830    300343598
[25]    763306930    800460000   1000000000   1000000000   1000000000   1000000000   1006245120   1407000000
[33]   1500000000   2580109502   2671180000   2779530283   8999999999  10000000000  11041428664  12600000000
[41]  15172086051  31112483745  37679831499  86712634466  99000000000  99991792688 104443257863 116945854633
[49] 184066828814 280255193861

Проблема в том, что: когда я запускаю приложение, есть только слайдер Bins, но нет гистограммы, и я получаю сообщение об ошибке:

Предупреждение: Ошибка в hist.default: некоторые 'x' не учитываются;может быть, 'breaks' не охватывают диапазон 'x'

Я думаю, что что-то не так с определением ячеек, но я не знаю что.Я думал, что это не работает из-за двойного, поэтому я использовал целое число, и я сделал MAXINTEGERVALUE как предел."By =" для bin равно 1000, как тест, потому что я хотел показать такие данные, как min (x), +1000, +2000, +3000, +4000.Таким образом, это может показать частоту валют, которые имеют цены в эти периоды.Я не знаю, почему это не сработает.Пожалуйста, помогите

Есть также ui.R, где я определяю ползунок Bin, если это необходимо

#
# This is a Shiny web application. You can run the application by clicking
# the 'Run App' button above.
#
# Find out more about building applications with Shiny here:
#
#    http://shiny.rstudio.com/
#


# Define UI for application that draws a histogram
# Define UI for app that draws a histogram ----
ui <- fluidPage(

  # App title ----
  titlePanel("Hello Shiny!"),

  # Sidebar layout with input and output definitions ----
  sidebarLayout(

    # Sidebar panel for inputs ----
    sidebarPanel(

      # Input: Slider for the number of bins ----
      sliderInput(inputId = "bins",
                  label = "Number of bins:",
                  min = 1,
                  max = 50,
                  value = 30)

    ),

    # Main panel for displaying outputs ----
    mainPanel(

      # Output: Histogram ----
      plotOutput(outputId = "distPlot")

    )
  )
)
...