У меня есть простой фрейм данных d
ниже, и я хочу создать гистограмму на основе частоты его значений. Я пытаюсь установить начальное значение как 0
, а затем отобразить значения по оси x с помощью 5
, но ни один из них, похоже, не работает, поскольку значения начинаются с 1
, а затем отображают 8
. Я обнаружил, что это происходит потому, что в моем фрейме данных нет значений 2
и 3
, поэтому подсчет останавливается на 1
и начинается с 4
до 8
, потому что мой фрейм данных включает 4,5,6,7,8
в качестве значений, поэтому подсчет останавливается нормально.
Решений может быть 2. Первое - найти способ отображать значения с нулевой частотой на оси, а второе - установить правильное форматирование галочки без этих значений на оси.
Я бы предпочел четкое сюжетное решение по этому поводу в качестве первого выбора без вмешательства ggplot()
.
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))
add_histogram(x = d[,1], xbins = list(start=0, end=20, size=1)) %>%
спасибо @tasasaki, это работает так, но без промежутков между стержнями, но это хорошо. Просто удалив коэффициент, мы получили столбцы креатина с диапазоном значений.
Есть хитрость с использованием categoryorder = "array"
и categoryarray = x_axis_values
в расположении по оси X. С их помощью вы можете вручную установить значения, которые будут содержать оси x.
Я немного изменил ваш пример кода, но это должно помочь:
# 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))
)
)
Здесь вывод:
Возможно, вы получите то, что хотите, опуская
as.factor()
: т.е.add_histogram(x = d[,1],source = "subset") %>%
?