2010-08-05 57 views
8

Tôi có một số giá trị 100k. Khi tôi vẽ chúng như là một dòng trong R (sử dụng plot(type="l") những con số bên cạnh ve trục x được in dưới dạng khoa học (ví dụ 0e+00,2e+04,...,1e+05) Thay vào đó, tôi muốn họ được:.Kiểm soát định dạng số ở trục của ô R

A) 0,20kb,...,100kb

B) giống nhau nhưng bây giờ toạ độ đầu tiên phải là 1 (tức là bắt đầu đếm từ 1 thay vì 0).

BTW mảng R sử dụng đánh số bắt đầu từ 1 (trái ngược với các mảng trong perl, java, vv) vì vậy tôi tự hỏi tại sao khi âm mưu "họ" đã quyết định bắt đầu từ 0 ...

Trả lời

8

A)

R> xpos <- seq(0, 1000, by=100) 
R> plot(1:1000, rnorm(1000), type="l", xaxt="n") 
R> axis(1, at=xpos, labels=sprintf("%.2fkb", xpos/1000)) 

B) tương tự như trên, điều chỉnh xpos

+0

điều này không chính xác. bạn chỉ cần thêm "kb" bên cạnh số, nhưng để lại số không thay đổi (thay vì chia cho 1000) –

+0

ít nhất là cho anh chàng phiếu bầu cho câu trả lời chính xác ngay bây giờ – John

0

câu hỏi đặt ra là khá cũ nhưng khi tôi nhìn cho các giải pháp cho vấn đề mô tả nó được xếp hạng khá cao. Vì vậy, tôi thêm điều này - khá muộn - câu trả lời và hy vọng rằng nó có thể giúp một số người khác :-).

Trong một số trường hợp, có thể hữu ích khi sử dụng vị trí đánh dấu mà R đề xuất. R cung cấp chức năng cho mục đích này. Có thể nó không tồn tại trong R2.X nhưng chỉ từ R3.X.

Một)

myTicks = axTicks(1) 
axis(1, at = myTicks, labels = paste(formatC(myTicks/1000, format = 'd'), 'kb', sep = '')) 

B)

Nếu bạn lô dữ liệu như plot(rnorm(1000)) thì x có giá trị đầu tiên là 1 và không 0. Do đó, đánh số tự động bắt đầu với 1. Có lẽ đây là một vấn đề với phiên bản trước của R?!

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