如何使我的垂直标签适合我的绘图窗口?

Eva*_*ske 19 r

我在R中创建了一个直方图,它显示了向量中几个事件的频率.每个事件由[1,9]范围内的整数表示.我正在图表的垂直下方显示每个计数的标签.这是代码:

hist(vector, axes = FALSE, breaks = chartBreaks)
axis(1, at = tickMarks, labels = eventTypes, las = 2, tick = FALSE) 
Run Code Online (Sandbox Code Playgroud)

不幸的是,标签太长了,所以它们会被窗户的底部切掉.我怎样才能让它们可见?我甚至使用正确的图表?

Dir*_*tel 10

查看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) 
Run Code Online (Sandbox Code Playgroud)

  • 尝试`par(mar = c(9,4,4,2)+ 0.1)`---第1面的默认边距是5,所以Dirk的例子实际上并没有为第1边创造任何大于正常值的东西---它使边-4比正常小.你只能通过调用`par()`来设置`mar`,`oma`等. (6认同)

Rei*_*son 9

这听起来不像直方图的工作 - 事件不是连续变量.条形图或点图可能更合适.

一些虚拟数据

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

通过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
Run Code Online (Sandbox Code Playgroud)

点图是通过函数生成的,dotchart()并且为我们排序绘图边距提供了额外的便利

dotchart(table(vec))
Run Code Online (Sandbox Code Playgroud)

点图比使用更少墨水显示相同信息的条形图具有优势,并且侧重于组间计数的差异而不是计数的大小.

请注意我如何将数据设置为一个因素.这允许我们将事件标签存储为因子的标签 - 从而自动标记图中的轴.它也是一种自然的方式来存储我理解你拥有的数据.