Выровнять столбцы гистограммы с помощью меток
По соображениям компоновки я хотел бы расположить гистограммные бары, центрированные на ярлыках, так что середина бара находится над меткой.
library(ggplot2)
df <- data.frame(x = c(0,0,1,2,2,2))
ggplot(df,aes(x)) +
geom_histogram(binwidth=1) +
scale_x_continuous(breaks=0:2)
Это то, что он выглядит до сих пор - левая сторона панели находится поверх метки:
![enter image description here]()
Можно ли настроить данный фрагмент таким образом? (без использования geom_bar вместо f.x.)
Ответы
Ответ 1
Это не требует категориальной оси x, но вам нужно немного поиграть, если у вас разная ширина бункера, чем 1.
library(ggplot2)
df <- data.frame(x = c(0,0,1,2,2,2))
ggplot(df,aes(x)) +
geom_histogram(binwidth=1,boundary=-0.5) +
scale_x_continuous(breaks=0:2)
Для более старых ggplot2
(< 2.1.0) используйте geom_histogram(binwidth=1, origin=-0.5)
.
Ответ 2
Вот один из вариантов: Вычислите собственные значения y, используйте x как категорированную ось x и используйте geom_bar(stat="identity")
.
library(ggplot2)
library(data.table)
df = data.table(x = c(0,0,1,2,2,2))
df = df[, .N, by=x]
p = ggplot(df, aes(x=factor(x), y=N)) +
geom_bar(stat="identity", width=1.0)
ggsave("barplot.png", p, width=8, height=4, dpi=120)
![enter image description here]()
Ответ 3
Код, приведенный ниже, используется, но больше не работает. Это мешало ggplot предположить, что ячейки могут быть разделены поровну (но теперь ggplot2:: geom_hiustogram ловит эту уловку и предлагает использовать другую функцию:
ggplot(df,aes( factor(x) )) +
geom_histogram(binwidth=1 )
#Error: StatBin requires a continuous x variable the x variable is discrete. Perhaps you want stat="count"?
Поэтому вместо этого используйте:
ggplot(df,aes( factor(x) )) +
stat_count ()