Я будую графік з категоріальною змінною на осі х і числовою змінною на осі у.
Для осі х, враховуючи, що є багато точок даних, форматування тексту за замовчуванням призводить до того, що підпис для кожної позначки перекриває інші підписи. Як мені (а) змінити розмір шрифту для тексту на осі та (б) змінити орієнтацію тексту таким чином, щоб текст був перпендикулярний до осі?
Використовуйте theme()
:
d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
theme(text = element_text(size=20),
axis.text.x = element_text(angle=90, hjust=1))
#vjust adjust the vertical justification of the labels, which is often useful
Ви можете знайти багато корисної інформації про те, як форматувати ваші ggplots тут. Ви можете переглянути повний список параметрів, які можна змінити (в основному, всі) за допомогою ?theme
.
Аналогічно @Drew Steen про використання theme()
. Ось загальні атрибути теми для тексту та заголовків осей.
ggplot(mtcars, aes(x = factor(cyl), y = mpg))+
geom_point()+
theme(axis.text.x = element_text(color = "grey20", size = 20, angle = 90, hjust = .5, vjust = .5, face = "plain"),
axis.text.y = element_text(color = "grey20", size = 12, angle = 0, hjust = 1, vjust = 0, face = "plain"),
axis.title.x = element_text(color = "grey20", size = 12, angle = 0, hjust = .5, vjust = 0, face = "plain"),
axis.title.y = element_text(color = "grey20", size = 12, angle = 90, hjust = .5, vjust = .5, face = "plain"))
У таких випадках допомагає використання атрибуту "fill". Ви можете видалити текст з осі за допомогою element_blank()
і показати багатобарвну гістограму з легендою. Я будую діаграму частоти заміни деталей у ремонтній майстерні, як показано нижче
ggplot(data=df_subset,aes(x=Part,y=Removal_Frequency,fill=Part))+geom_bar(stat="identity")+theme(axis.text.x = element_blank())
У моєму випадку я пішов на це рішення, оскільки у мене було багато стовпчиків на гістограмі, і я не зміг знайти відповідний розмір шрифту, який був би і читабельним, і достатньо маленьким, щоб не перекривати один одного.