2013-02-03 35 views
5

Khi tôi boxplot một số dữ liệu được đo bằng giây trong R, làm cách nào tôi có thể thay đổi tỷ lệ trục y từ giây sang phút và giây?R: ô vuông với phút và giây theo trục y

Ví dụ khi tôi làm điều gì đó như thế này:

data <- c(298, 507, 1008, 346) 
boxplot(data) 

tôi nhận được một boxplot với trục y từ 300 đến 1000. Tôi muốn có "05:00" thành "16:40" có thay vào đó, chỉ đơn giản là giây chuyển đổi thành phút và giây.

Trả lời

8

Đây là một nỗ lực. Nó biến trục y ra trước và sau đó chuyển đổi dữ liệu thành phút và thêm nó vào trục y làm dấu kiểm.

data <- c(298, 507, 1008, 346) 
boxplot(data, yaxt="n") 
at <- axTicks(2) 
axis(2, at=at, labels=sprintf("%d:%02d", at %/% 60, at %% 60), las=1) 

Để cung cấp một chút giải thích:

"Tính địa điểm tickmark đẹp, cùng một cách như R không nội." (Từ ?axTicks).

%% sẽ cung cấp cho bạn phần còn lại sau khi chia, trong khi %/% chí, nếu được x %/% y cho bạn biết bao nhiêu lần x đi vào y.

Cuối cùng, sprintf được sử dụng để định dạng chuỗi và ý pad giá trị giây tính toán luôn luôn gắn hàng đầu 0 's nếu có yêu cầu, ví dụ: - 2 trở thành 02.

enter image description here

+0

Đây là _exactly_ những gì tôi cần. Cảm ơn rất nhiều :-) –

3

Một thay thế với chức năng axis.POSIXct:

data <- c(298, 507, 1008, 346) 
data2 <- as.POSIXct(data, origin=cut(Sys.time(), "hours")) 
boxplot(data2, pars=list(yaxt="n")) 
axis.POSIXct(2, at=pretty(data2), format="%M:%S", las=2) 

enter image description here

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