Я строю график с категориальной переменной на оси x и числовой переменной на оси y.
Для оси x, поскольку имеется много точек данных, форматирование текста по умолчанию приводит к тому, что метка для каждой отметки перекрывается другими метками. Как (a) изменить размер шрифта для текста на оси и (b) изменить ориентацию текста, чтобы он был перпендикулярен оси?
Используйте 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"))
Добавление к предыдущему решений, вы также можете указать размер шрифта относительно в base_size для включения в такие темы, как
theme_bw()(где
base_sizeэто 11) с помощью атрибута rel()
функция.
Например:
ggplot(mtcars, aes(disp, mpg)) +
geom_point() +
theme_bw() +
theme(axis.text.x=element_text(size=rel(0.5), angle=90))
Использование атрибута "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())
Я выбрал это решение в моем случае, поскольку у меня было много столбцов в гистограмме, и я не смог найти подходящий размер шрифта, который был бы читабельным и достаточно мелким, чтобы не перекрывать друг друга.
Когда делая много участков, есть смысл установить его в глобальном масштабе (соответствующие части второй линии, три линии вместе являются рабочий пример):
library('ggplot2')
theme_update(text = element_text(size=20))
ggplot(mpg, aes(displ, hwy, colour = class)) + geom_point()