/ / Q: R ggplot2 обмеження осі geom_bar… Межі осей x та мітки - r, ggplot2

Q: R ggplot2 geom_bar осі обмежує ... межі та мітки осі x - r, ggplot2

Я вже багато переглядав, але, на жаль, простознайти неясну інформацію. Я хочу відобразити співвідношення статі за класами довжини. Для цього я зробив штабельну барплоту з ggplot2 (geom_bar). Це код:

Data <- data.frame(LCnew=c(30,30,31,31,32,32,33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40),
sex=c(1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,2))
ggplot(Data, aes(x=factor(LCnew), fill=factor(sex)))+geom_bar(position="fill") +  scale_x_discrete("Lengthclass [mm]") +  scale_y_continuous("Proportion of sexes") + scale_fill_manual(values=cols)

cols - просто простий вектор з кольорами в ньому.

Це сюжет поки що:

введіть опис зображення тут

Моя проблема полягає в тому, що я не в змозі змінититекст осі. Я просто хочу текст під кожним п'ятим рядком, інакше вони перетинаються. Я спробував це з обмеженнями та перервами команди, але це просто дало мені порожній графік.

scale_x_continuous("Standard Length [mm]",limits=c(30,85),breaks=c(30,35,40,45,50,55,60,65,70,75,80,85))

Будь-які пропозиції?

Відповіді:

2 для відповіді № 1

Якщо ви хочете запобігти перекриванню міток, ви можете дотримуватися кількох стратегій:

1) Визначте перерви:

ggplot(y, aes(x=factor(length), fill=factor(sex))) +
geom_bar(position="fill", width=0.7) +
scale_x_discrete("Standard Length [mm]", breaks=c(300000,350000,400000)) +
scale_y_continuous("Proportion of sexes", expand=c(0,0)) +
scale_fill_manual("Sex", values=c("blue","pink"), labels=c("Male","Female")) +
theme_minimal()

який дає наступний сюжет:

введіть опис зображення тут

2) Змініть кут мітки:

ggplot(y, aes(x=factor(length), fill=factor(sex))) +
geom_bar(position="fill", width=0.7) +
scale_x_discrete("Lengthclass [mm]", expand=c(0,0)) +
scale_y_continuous("Proportion of sexes", expand=c(0,0)) +
scale_fill_manual("Sex", values=c("blue","pink"), labels=c("Male","Female")) +
theme_minimal() +
theme(axis.text.x = element_text(angle=90, vjust = 0.5))

який дає:

введіть опис зображення тут

3) Поверніть сюжет:

ggplot(y, aes(x=factor(length), fill=factor(sex))) +
geom_bar(position="fill", width=0.7) +
scale_x_discrete("Lengthclass [mm]", expand=c(0,0)) +
scale_y_continuous("Proportion of sexes", expand=c(0,0)) +
scale_fill_manual("Sex", values=c("blue","pink"), labels=c("Male","Female")) +
coord_flip() +
theme_minimal()

який дає:

введіть опис зображення тут


Використовувані дані:

y <- structure(list(length = c(300000, 300000, 310000, 310000, 320000, 320000, 330000, 330000, 340000, 340000, 350000, 350000, 360000, 360000, 370000, 370000, 380000, 380000, 390000, 390000, 400000, 400000, 300000, 310000, 330000, 340000, 360000, 380000, 390000),
sex = c(1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 1, 2)), .Names = c("length", "sex"), row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "110", "41", "71", "101", "131", "171", "201"), class = "data.frame")

1 для відповіді № 2

Спробуйте додати "мітки"

scale_x_continuous("Standard Length [mm]", breaks=c(30,35,40,45,50,55,60,65,70,75,80,85),labels=c(30,35,40,45,50,55,60,65,70,75,80,85))