Как отобразить значения с нулевой частотой на оси x гистограммы? - PullRequest
0 голосов
/ 30 мая 2019

У меня есть простой кадр данных d ниже, и я хочу создать гистограмму, основанную на частоте ее значений.Я пытаюсь установить начальное значение как 0, а затем отобразить значения по оси x на 5, но ни один из них, похоже, не работает, поскольку значения начинаются с 1, а затем отображаются 8.Я обнаружил, что это происходит из-за того, что мой фрейм данных не имеет 2 и 3 в качестве значений, поэтому отсчет останавливается на 1 и начинается с 4 до 8, потому что мой фрейм данных включает в себя 4,5,6,7,8 в качестве значений, поэтомусчет обычно останавливается.

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

Я бы предпочел четкое графическое решение этого вопроса в качестве первого выбора, без ggplot() помех.

enter image description here

d<-data.frame(c(1,5,7,5,4,5,6,7,8,9,10,15,13))
x <- list(
  tick0=0,
  dtick=5

)

# Create the plotly histogram

plot_ly(alpha = 0.9) %>%
  add_histogram(x = as.factor(d[,1]),source="subset") %>%
  # Add titles in plot and axes
  layout(barmode = "overlay",xaxis=x,margin=list(b=100))

1 Ответ

1 голос
/ 23 июля 2019

Есть хитрость, использующая categoryorder = "array и categoryarray = x_axis_values в макете xaxis. С их помощью вы можете вручную установить значения, которые будет содержать xaxis.

Я немного изменил ваш пример кода, но это должно сработать:

# yours data
d = c(1,5,7,5,4,5,6,7,8,9,10,15,13)

# Create the plotly histogram

plot_ly(alpha = 0.9) %>%
  add_histogram(x = as.character(d)
                ) %>%
  # Add titles in plot and axes
  layout(barmode = "overlay",
         margin=list(b=100),
         # Set the xaxis values
         xaxis=list(categoryorder="array",
                    categoryarray = as.character(min(d):max(d))
                    )
        )

Вот вывод:

enter image description here

...