2012-01-18 34 views
13

Tôi có một âm mưu có $ -giá trị và ngày trên trục y và x tương ứng. Hiện nay số tiền đô la dao động từ 0-15 triệu đô la. Một cái gì đó như thế này:R thay đổi định dạng tỷ lệ trên trục y

x <- rnorm(20)^2 * 1000000 
plot(x) 

R làm công cụ như '1.0e+07' thay vì '10,000,000' và cũng định hướng văn bản theo chiều dọc thay vì theo chiều ngang.

Câu hỏi của tôi là:

1) làm cách nào để có văn bản quy mô được định hướng theo chiều ngang?

2) Tôi làm cách nào để R sử dụng 10MM thay vì '10,000,000' hoặc '1.0e+07'?

Trả lời

25

1) Xem scipen tùy chọn trong ?options mà là một hình phạt đối với việc sử dụng các ký hiệu khoa học. Để kiểm soát tốt hơn, bạn cần vẽ trục bằng tay với các nhãn bạn muốn.

2) Xem las trong ?par điều khiển để định hướng thô sơ của nhãn trục.

Đối 1):

x <- rnorm(20)^2 * 10000000 
layout(matrix(1:2, ncol = 2)) 
plot(x) 
getOption("scipen") 
opt <- options("scipen" = 20) 
getOption("scipen") 
plot(x) 
options(opt) 
layout(1) 

mang đến cho

enter image description here

Để vẽ trục của riêng bạn thử

plot(x/10000000, axes = FALSE) 
axis(1) 
pts <- pretty(x/10000000) 
axis(2, at = pts, labels = paste(pts, "MM", sep = "")) 
box() 

Mà cho

enter image description here

Nơi chúng tôi sử dụng pretty() để chọn vị trí đẹp cho các dấu tích giống như R và sau đó thêm trục tùy chỉnh. Lưu ý cách chúng tôi chặn bản vẽ trục trong cuộc gọi plot() và sau đó thêm lại trục và khung cốt truyện có các cuộc gọi đến axis()box().

Đối 2) kết hợp với 1)

opt <- options("scipen" = 20) 
op <- par(mar = c(5,7,4,2) + 0.1) ## extra margin to accommodate tick labs 
x <- rnorm(20)^2 * 10000000 
plot(x, las = 1, ylab = "")  ## no y-axis label 
title(ylab = "label", line = 5.5) ## need to plot the axis label 
par(op) 
options(opt) 

Mà cho

enter image description here

Chú ý cách chúng tôi sử dụng las trong plot() cuộc gọi, và chúng ta cần phải tạo ra một số khoảng cách lề thêm để thích ứng nhãn tick. Chúng tôi cũng cần vẽ nhãn bằng tay nếu không R sẽ dán nhãn vào giữa các nhãn đánh dấu.

Đối với các nhãn trục tùy chỉnh, thêm las = 1 đến axis() gọi:

op <- par(mar = c(5,5,4,2) + 0.1) 
plot(x/10000000, axes = FALSE, ylab = "") 
axis(1) 
pts <- pretty(x/10000000) 
axis(2, at = pts, labels = paste(pts, "MM", sep = ""), las = 1) 
title(ylab = "my label", line = 4) 
box() 
par(op) 

nào sản xuất

enter image description here

11

Sử dụng axis với nhãn tùy chỉnh. Đầu tiên, chia dữ liệu của bạn cho 1 triệu. Và sau đó tạo một chuỗi ký hiệu MM bằng cách sử dụng dán()

y <-rnorm(20)^2 * 1000000 /1000000 
x <-11:30 

plot(x,y, yaxt="n") 
my.axis <-paste(axTicks(2),"MM",sep="") 
axis(2,at=axTicks(2), labels=my.axis) 

Văn bản hiện đang nằm ngang. Nhưng nếu bạn gặp phải vấn đề sử dụng, las = 1 buộc các nhãn phải nằm ngang.

axis(2,at=axTicks(2), labels=my.axis, las=1) 

enter image description here

+0

+1 đặc biệt cho 'axTicks()'! –

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