我在R中创建一个直方图,显示矢量中几个事件的频率。每个事件由[1,9]范围内的整数表示。我正在图表的垂直下方显示每个计数的标签。这是代码:
hist(vector, axes = FALSE, breaks = chartBreaks)
axis(1, at = tickMarks, labels = eventTypes, las = 2, tick = FALSE)
不幸的是,标签太长了,所以它们会被窗户的底部切掉。我怎样才能让它们可见?我甚至使用正确的图表吗?
答案 0 :(得分: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)
答案 1 :(得分:9)
这听起来不像直方图的作业 - 事件不是连续变量。条形图或点图可能更合适。
一些虚拟数据
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 :(得分:0)
或许在标签中添加\ n,以便它们包裹在2行上?它不是最佳的,但可能有效。
答案 3 :(得分:0)
您可能希望从Cross Validated
中查看此post