Для этого есть несколько исправлений:
Измените ваши ограничения
Как указано @ Dave2e - см. Его ответ
Измените размер вашего вывода
Интересная особенность графики в R заключается в том, что соотношение сторон и разрешение графического устройства изменят результат и внешний вид графика. Когда я запустил ваш код ... отсечения не наблюдалось. Вы можете проверить это, создав сюжет, а затем сохраняя его по-другому. Если я возьму ваш код по умолчанию, вот что я получу с разными аргументами для width=
и height=
для ggsave()
в виде png:
ggsave('a1.png', width=10, height=5)
ggsave('a2.png', width=15, height=5)
Установить расширение
Третий способ - установить расширение до пределов шкалы. По умолчанию ggplot2
фактически добавляет некоторые «отступы» к концам шкалы. Итак, если вы установите свои пределы от 0 до 10, у вас действительно будет область графика, которая немного выходит за это (по умолчанию около 5%). Вы можете переопределить этот параметр, используя аргумент expand=
команд scale_...
в ggplot
. Таким образом, вы можете установить этот предел, например, в следующем коде:
labels <- c("A","B","C","D","E")
freq <- c(10.3678, 5.84554, 1.5673, 2.313, 7.111)
type <- c("rich","poor","poor","poor","rich")
df <- data.frame(labels, freq, type)
library(ggplot2)
ggplot(df, aes(x = reorder(labels,freq), y= freq, fill = type)) +
geom_bar(stat = "identity", alpha = 1, width = 0.9)+
coord_flip()+
xlab("")+
ylab("Mean frequency")+
scale_fill_manual(name = "Type", values = c("red", "blue")) +
ggtitle("Mean frequency of different labels")+
geom_text(label = freq, size = 3.5, hjust = -0.2) +
scale_y_continuous(expand=expansion(mult=c(0,0.15)))
Вы можете определить нижнее и верхнее расширение для оси, поэтому в приведенном выше коде я решил не устанавливать расширение до нижнего предела шкалы y и использовать множитель 0,15 (около 15%) для верхнего предела. По-моему, по умолчанию 0,05 (или 5%).