Как я могу сделать свои вертикальные метки подходящими в моем окне графика?

Я создаю гистограмму в R, которая отображает частоту нескольких событий в векторе. Каждое событие представлено целым числом в диапазоне [1, 9]. Я показываю метку для каждого подсчета по вертикали ниже диаграммы. Здесь код:

hist(vector, axes = FALSE, breaks = chartBreaks)
axis(1, at = tickMarks, labels = eventTypes, las = 2, tick = FALSE) 

К сожалению, метки слишком длинны, поэтому они обрезаются в нижней части окна. Как я могу сделать их видимыми? Я даже использую правильный график?

Ответы

Ответ 1

Это не похоже на задание для гистограммы - событие не является непрерывной переменной. Более подходящим может быть штрих-код или точка-точка.

Некоторые фиктивные данные

set.seed(123)
vec <- sample(1:9, 100, replace = TRUE)
vec <- factor(vec, labels = paste("My long event name", 1:9))

Шрифт создается через функцию barplot() - мы предоставляем ему подсчеты каждого события, используя функцию table() для удобства. Здесь нам нужно повернуть метки с помощью las = 2 и создать дополнительное пространство меток в поле

## lots of extra space in the margin for side 1
op <- par(mar = c(10,4,4,2) + 0.1)
barplot(table(vec), las = 2)
par(op) ## reset

Точечная точка создается через функцию dotchart() и имеет дополнительное удобство сортировки полей графика для нас

dotchart(table(vec))

Долото имеет преимущество перед штриховым рисунком, используя гораздо меньше чернил для отображения той же информации и фокусируется на различиях в подсчетах по группам, а не на величинах счетчиков.

Обратите внимание, как я настроил данные как фактор. Это позволяет хранить метки событий в качестве ярлыков для фактора - таким образом автоматизируя маркировку осей на графиках. Это также естественный способ хранения данных, которые, как я понимаю, у вас есть.

Ответ 2

Посмотрите help(par), в частности, поля mar (для поля) и oma (для внешнего поля). Это может быть так же просто, как

par(mar=c(5,3,1,1))   # extra large bottom margin
hist(vector, axes = FALSE, breaks = chartBreaks)
axis(1, at = tickMarks, labels = eventTypes, las = 2, tick = FALSE) 

Ответ 3

Возможно, добавив \n в ваши ярлыки, чтобы они были перенесены на 2 строки? Это не оптимально, но может работать.

Ответ 4

Возможно, вы захотите посмотреть сообщение с помощью Cross Validated