2013-03-19 24 views
6

tôi tạo ra một âm mưu sử dụng gói hexbin:Formatting và thao tác một âm mưu từ gói R "hexbin"

enter image description here

# install.packages("hexbin", dependencies=T) 
library(hexbin) 


set.seed(1234) 
x <- rnorm(1e6) 
y <- rnorm(1e6) 
hbin <- hexbin(
    x = x 
    , y = y 
    , xbin = 50 
    , xlab = expression(alpha) 
    , ylab = expression(beta) 
) 


## Using plot method for hexbin objects: 
plot(hbin, style = "nested.lattice") 

abline(h=0) 

này dường như để tạo ra một đối tượng S4 (hbin), mà tôi thì âm mưu sử dụng plot. Bây giờ tôi muốn thêm một đường ngang để âm mưu rằng việc sử dụng abline, nhưng tiếc là điều này sẽ cho các lỗi:

plot.new has not yet been called

Tôi cũng không có ý tưởng, làm thế nào tôi có thể thao tác ví dụ vị trí của nhãn trục (alpha và beta nằm trong các số), thay đổi vị trí của chú giải, v.v.

Tôi quen thuộc với OOP, nhưng cho đến nay tôi không thể tìm hiểu cách lô() xử lý đối tượng (nó gọi một số phương thức của đối tượng?) và làm thế nào tôi có thể thao tác cốt truyện kết quả.

Tại sao tôi không thể vẽ một đường thẳng lên ô?

Tôi có thể thao tác nhãn trục bằng cách nào?

Trả lời

2

Sử dụng phiên bản mạng của hex bin - hexbinplot(). Với panel bạn có thể thêm đường dây của mình và với style bạn có thể chọn các cách khác nhau để trực quan hóa hình lục giác. Kiểm tra trợ giúp cho hexbinplot để biết thêm.

library(hexbin) 
library(lattice) 
x <- rnorm(1e6) 
y <- rnorm(1e6) 
hexbinplot(x ~ y, aspect = 1, bins=50, 
      xlab = expression(alpha), ylab = expression(beta), 
      style = "nested.centroids", 
      panel = function(...) { 
      panel.hexbinplot(...) 
      panel.abline(h=0) 
      }) 

enter image description here

+0

Làm cách nào để thay đổi kích thước của nhãn trục và các giá trị được hiển thị dọc theo trục? Tôi đã thử 'cex. *' Trong tất cả các biến thể, nhưng điều duy nhất tôi có thể thay đổi là kích thước của các nhãn huyền thoại, ... Tôi cũng không thể thay đổi các tham số (ví dụ 'par (mar = c (15, 15,15,15)) ') –

+1

Xem trợ giúp cho' xyplot' và đối số cho 'scale'. Ví dụ, thay đổi kích thước của các giá trị dọc theo trục x sẽ bằng cách thêm 'scale = list (x = list (cex = 1.5))' vào bạn 'hexbinplot'. Để thay đổi nhãn trục, bạn cần thêm 'par.settings = list (par.xlab.text = list (cex = 1.5))' vào cốt truyện của bạn. Tôi biết nó không trực quan lắm, nhưng đó là cách nó hoạt động trong mạng tinh thể. Hãy cho tôi biết nếu điều đó giải quyết nó. –

+0

Tôi vẫn không hiểu tại sao công việc này, và nơi tôi có thể tìm thấy nó trong sự giúp đỡ. Để thay đổi kích thước của 'xlab' tôi đã thử' xlab = list ( biểu thức (alpha) , cex = 2 ) 'Nó hoạt động, nhưng không có gợi ý trong sách hướng dẫn. Có lẽ cách của tôi là 'grob' ??? Tôi cũng vẫn không hiểu làm thế nào 'cốt truyện',' trellis', 'mạng ',' ggplot', 'lưới', ... có liên quan. –

2

hexbin sử dụng đồ họa grid, không base. Có một chức năng tương tự, grid.abline, có thể vẽ đường trên lô bằng cách xác định một độ dốc và đánh chặn, nhưng hệ thống phối hợp sử dụng là khó hiểu:

grid.abline(325,0) 

được xấp xỉ những gì bạn muốn, nhưng đánh chặn ở đây đã được tìm thấy bằng mắt.

Bạn sẽ có nhiều may mắn sử dụng ggplot2:

library(ggplot2) 
ggplot(data,aes(x=alpha,y=beta)) + geom_hex(bins=10) + geom_hline(yintercept=0.5) 

hexbin

+2

Vì vậy, gói của nó không tốt? Thành thật mà nói, tôi hoàn toàn không biết các gói khác nhau khác nhau như thế nào. Cho đến nay tôi đã không sử dụng ggplot, vì đầu ra là xấu xí, và? Ggplot không cung cấp bất kỳ thông tin nào về cách thay đổi, ví dụ: tiêu đề trục (điều này cũng đúng cho hexbin). Có phải tài liệu hay về cách các cơ chế cốt truyện khác nhau hoạt động không? ('plot()' sử dụng 'base',' abline() 'chỉ có thể thực hiện các thay đổi đối với các ô' base', 'hexbin' sử dụng' grid' mặc dù nó được sử dụng trong 'plot()', chính nó sử dụng 'base' (nhưng không phải trong trường hợp này, vì nó sử dụng 'grid'), ggplot sử dụng ???, ...) –

+0

@Sven Xem http://docs.ggplot2.org/current/ và http://ggplot2.org/ cho tài liệu. Tiêu đề trục có thể được thay đổi tại đây với 'scale_x_continuous' và' scale_y_continuous'. 'ggplot2' cũng sử dụng hệ thống' grid', nhưng cung cấp một giao diện dễ dàng hơn. – James

0

Tôi đã có rất nhiều khó khăn khi tìm rất nhiều điều chỉnh cơ bản cốt truyện (dãy trục, nhãn, vv) với hexbin thư viện nhưng tôi đã tìm ra cách để xuất khẩu các điểm vào bất kỳ chức năng âm mưu khác:

hxb<-hexbin(x=c(-15,-15,75,75), 
      y=c(-15,-15,75,75), 
      xbins=12) 

[email protected] #gives the x co-ordinates of each hex tile 
[email protected] #gives the y co-ordinates of each hex tile 
[email protected] #gives the cell size for each hex tile 

points([email protected], [email protected], [email protected]) 

bạn chỉ có thể nuôi ba vectơ vào bất kỳ công cụ âm mưu bạn thường sử dụng .. đó là tinh chỉnh thông thường của kích thước rộng, vv nhưng nó tốt hơn nhiều so với bướng bỉnh chức năng hexplot. Vấn đề tôi tìm thấy với ggplot2stat_binhex là tôi không thể nhận được các kích thước hình lục giác khác nhau ... chỉ các màu khác nhau.

nếu bạn thực sự muốn hình lục giác, plotrix có chức năng vẽ hình lục giác mà tôi nghĩ là tốt.

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