С данными, которые вы разместили, я не думаю, что вы можете иметь этот график, чтобы выглядеть хорошо. У вас не может быть достаточно тонких столбцов, чтобы различать 0.293
и 0.296
, когда ваши данные колеблются от 0
до 0.9
.
Может быть, вы могли бы попытаться рассматривать это как фактор, просто чтобы проиллюстрировать, что вы хотите сделать:
freqinter <- data.frame(x = c(
0.293040975264367,
0.296736775990729,
0.297619926364764,
0.587377012109561,
0.595245125315916,
0.597022018595893), Freq = c(17,2,4,1,4,2))
freqintra <- data.frame(x = c(
0 ,
0.293040975264367,
0.597022018595893,
0.598809552335782,
0.898227748764939), Freq = c(3,15,4,2,6))
df <- bind_rows(freqinter, freqintra, .id = "id")
ggplot(df, aes(x = as.factor(x), y = Freq, fill = id)) +
geom_bar(stat = "identity", position = position_dodge2(preserve = "single")) +
theme(axis.text.x = element_text(angle = 90)) +
scale_fill_discrete(labels = c("inter", "intra"))
Вы также можете проверить проблему, не обрабатывая переменную x
как фактор:
ggplot(df, aes(x = x, y = Freq, fill = id)) +
geom_bar(stat = "identity", width = 0.05, position = "dodge") +
theme(axis.text.x = element_text(angle = 90)) +
scale_fill_discrete(labels = c("inter", "intra"))
Либо столбцы должны быть очень тонкими (маленькие width
), либо вы получите перекрывающиеся интервалы x
, нарушающие график.