Проблема с графиками, которые устарели в RStudio - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь ознакомиться с функциональностью и синтаксисом plotly и попробовал несколько скриптов, предоставленных для составления и рендеринга графиков данных.Тем не менее, при создании вывода графика с использованием RStudio я получаю следующую ошибку: «Предупреждающее сообщение: указание ширины / высоты в layout () теперь не рекомендуется. Укажите ggplotly () или plot_ly ()»

Выходное изображение выглядит беспорядочным и не интерпретируемым в консоли RStudio, и я попробовал несколько изменений, таких как установка ширины и высоты объекта заговора равными нулю и т. Д., Без удачи.

Вот один из примеров сценариев, которые я использовал, когда сталкивался с этой проблемой:

library(plotly)
trace1 <- list(
  x = c("Aug-12", "Sep-12", "Oct-12", "Nov-12", "Dec-12", "Jan-12", "Feb-13", "Mar-13", "Apr-13", "May-13", "Jun-13", "Jul-13"), 
  y = c(65, 77, 112, 279, 172, 133, 152, 106, 79, 225, 99, 150), 
  hoverinfo = "x+y+name", 
  line = list(
    color = "#5BC075", 
    width = "3"
  ), 
  mode = "lines", 
  name = "Median deal size", 
  type = "scatter", 
  uid = "a8e83b", 
  xsrc = "jackluo:508:b357d2", 
  ysrc = "jackluo:508:d19900"
)
trace2 <- list(
  x = c("Aug-12", "Sep-12", "Oct-12", "Nov-12", "Dec-12", "Jan-12", "Feb-13", "Mar-13", "Apr-13", "May-13", "Jun-13", "Jul-13"), 
  y = c(116, 125, 126, 125, 244, 136, 80, 82, 89, 82, 95, 107), 
  hoverinfo = "x+y+name", 
  line = list(
    color = "#CC6E55", 
    width = "3"
  ), 
  mode = "lines", 
  name = "Number of deals", 
  type = "scatter", 
  uid = "2be33b", 
  xsrc = "jackluo:508:b357d2", 
  ysrc = "jackluo:508:5d533d"
)
data <- list(trace1, trace2)
layout <- list(
  autosize = TRUE, 
  font = list(
    family = "Overpass", 
    size = 12
  ), 
  height = 720, 
  legend = list(
    x = 0, 
    y = -0.1, 
    bgcolor = "rgba(255, 255, 255, 0)", 
    orientation = "h"
  ), 
  margin = list(
    r = 40, 
    t = 40, 
    b = 40, 
    l = 40, 
    pad = 2
  ), 
  title = "", 
  width = 1280, 
  xaxis = list(
    autorange = TRUE, 
    nticks = 12, 
    range = c(0, 11), 
    rangemode = "tozero", 
    type = "category"
  ), 
  yaxis = list(
    autorange = TRUE, 
    range = c(0, 293.6842105263158), 
    rangemode = "tozero", 
    type = "linear"
  )
)
p <- plot_ly()
p <- add_trace(p, x=trace1$x, y=trace1$y, hoverinfo=trace1$hoverinfo, line=trace1$line, mode=trace1$mode, name=trace1$name, type=trace1$type, uid=trace1$uid, xsrc=trace1$xsrc, ysrc=trace1$ysrc)
p <- add_trace(p, x=trace2$x, y=trace2$y, hoverinfo=trace2$hoverinfo, line=trace2$line, mode=trace2$mode, name=trace2$name, type=trace2$type, uid=trace2$uid, xsrc=trace2$xsrc, ysrc=trace2$ysrc)
p <- layout(p, autosize=layout$autosize, font=layout$font, height=layout$height, legend=layout$legend, margin=layout$margin, title=layout$title, width=layout$width, xaxis=layout$xaxis, yaxis=layout$yaxis)
p$x$layout$width <- NULL
p$x$layout$height <- NULL
p$width <- NULL
p$height <- NULL
p

Любая помощь, помогающая решить эту проблему, чтобы диаграммы были правильно масштабированы и читались, была бы очень признательна!

Ответы [ 2 ]

0 голосов
/ 21 апреля 2019

enter image description here

Как и предполагал @NoahOlsen, вам нужно отформатировать значения по оси X в качестве даты .

trace1$x <- as.Date(paste0("01-", trace1$x), format = "%d-%b-%y")
trace2$x <- as.Date(paste0("01-", trace2$x), format = "%d-%b-%y")

Объяснение

as.Date() пытается отформатировать ввод в объект даты.Он хорошо работает со строками даты ISO (например, 2019-04-21), но нуждается в некоторой помощи с более сложными форматами.

С ?strptime:

%d - Day of the month as decimal number (01–31).
%b - Abbreviated month name in the current locale on this platform. (Also matches full name on input: in some locales there are no abbreviations of names.)
%Y - Year with century. Note that whereas there was no zero in the original Gregorian calendar, ISO 8601:2004 defines it to be valid (interpreted as 1BC): see https://en.wikipedia.org/wiki/0_(year). Note that the standards also say that years before 1582 in its calendar should only be used with agreement of the parties involved. For input, only years 0:9999 are accepted.

Кроме того, нам также нужен конкретный day of the month.Так как он не существует в ваших данных, я добавил 01- через paste0() к каждому значению вектора даты.Другие значения, такие как 15-, также были бы допустимым выбором (в зависимости от ваших данных и ожидаемого типа вывода).Таким образом, мы можем заставить функцию распознавать вашу дату через format = "%d-%b-%y".

Проверьте ?as.Date и ?strptime для получения дополнительной информации.Пинг мне, если вам требуется дальнейшее руководство.Рад был помочь.

0 голосов
/ 19 апреля 2019

Похоже, что ваша ось X является символом, а не датой, поэтому ось отсортирована по алфавиту, а не по хронологии.Я бы попробовал сделать даты значений х.

...