2010-11-08 13 views
15

Tôi đang tạo biểu đồ trong R hiển thị tần suất của một số sự kiện trong một vectơ. Mỗi sự kiện được biểu thị bằng một số nguyên trong phạm vi [1, 9]. Tôi đang hiển thị nhãn cho mỗi số theo chiều dọc bên dưới biểu đồ. Đây là mã:Làm cách nào để tôi có thể làm cho các nhãn dọc của mình vừa với cửa sổ vẽ đồ họa?

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

Thật không may, nhãn quá dài nên chúng bị cắt ở dưới cùng của cửa sổ. Làm cách nào để tôi có thể hiển thị chúng? Tôi thậm chí có sử dụng biểu đồ đúng không?

Trả lời

8

Điều này nghe không giống như một công việc cho biểu đồ - sự kiện không phải là biến số liên tục. Một barplot hoặc dotplot có thể phù hợp hơn.

Một số dữ liệu giả

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

Một barplot được sản xuất thông qua barplot() chức năng - chúng tôi cung cấp cho nó những tội danh mỗi sự kiện bằng cách sử dụng chức năng table() cho thuận tiện. Ở đây chúng ta cần phải xoay nhãn sử dụng las = 2 và tạo ra một số không gian thêm của nhãn ở bên lề

## 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 

Một dotplot được sản xuất thông qua chức năng dotchart() và có sự tiện lợi gia tăng của phân loại ra bên lề cốt truyện cho chúng ta

dotchart(table(vec)) 

Dấu chấm có ưu điểm so với vạch sử dụng mực ít hơn nhiều để hiển thị cùng một thông tin và tập trung vào sự khác biệt về số lượng giữa các nhóm thay vì độ lớn của số đếm.

Lưu ý cách tôi thiết lập dữ liệu làm nhân tố. Điều này cho phép chúng tôi lưu trữ nhãn sự kiện làm nhãn cho yếu tố - do đó tự động ghi nhãn của các trục trong ô. Nó cũng là một cách tự nhiên để lưu trữ dữ liệu như tôi hiểu bạn có.

+0

Nếu một người đang sử dụng hist() cách để giảm kích thước của nhãn sẽ là với cex.axis. Nó xuất hiện cùng một thông số âm mưu được sử dụng bởi barplot, nhưng sau khi kiểm tra câu trả lời nó xuất hiện thay vì là cex.names vì ​​nhãn "số" dường như được xử lý khác với "ký tự" trong barplot(). –

+0

Nhãn thanh và nhãn trục đếm được vẽ trong hai cuộc gọi riêng biệt tới 'axis()'. 'cex.axis' khi được đặt trong một cuộc gọi bên ngoài thành' par() 'sẽ thay đổi cả hai nhãn này vì' cex.axis' và 'cex.name' lấy' par ("cex.axis") 'làm mặc định của chúng. Nếu bạn cung cấp 'cex.axis' cho lệnh' barplot() ', bạn không thay đổi' par ("cex.axis") ', và do đó các nhãn không thay đổi kích thước.Trong 'hist()', bạn đang vẽ hai trục số, rút ​​ra cùng một lúc để cả hai bị ảnh hưởng bởi 'cex.axis'. –

9

Nhìn vào help(par), trong các trường cụ thể mar (đối với lề) và oma (đối với lề ngoài). Nó có thể đơn giản như

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) 
+0

Tôi biết rằng có một lời giải thích đơn giản cho điều này, nhưng không có vấn đề gì tôi làm với mar, oma, hoặc Omi, không có gì thay đổi. Tôi đã thử thiết lập nó với mệnh() và chuyển nó vào hist(); không có con xúc xắc. –

+4

thử 'par (mar = c (9,4,4,2) + 0,1)' --- lề mặc định ở bên 1 là 5 để ví dụ của Dirk không thực sự tạo ra bất kỳ thứ gì lớn hơn bình thường cho cạnh 1 --- nó làm cho các cạnh -4 nhỏ hơn bình thường. Bạn chỉ có thể thiết lập 'mar',' oma' vv thông qua một cuộc gọi đến 'par()'. –

0

Có thể thêm \ n vào nhãn của bạn để chúng sẽ bao bọc thành 2 dòng? Nó không tối ưu, nhưng nó có thể hoạt động.

0

Bạn có thể muốn nhìn vào post này từ Hội Chữ thập Validated

Các vấn đề liên quan