2013-07-05 51 views
5

Làm cách nào để vẽ biểu đồ "bước" hoặc "cầu thang" trong ggplot2 trong R? cái gì đó như:cách vẽ đồ thị biểu đồ bước trong ggplot2 trong R?

enter image description here

nơi chiều rộng của mỗi dòng ngang đại diện cho kích thước thùng (các giá trị x-axis) và chiều cao tương ứng với phần của dữ liệu mà rơi vào thùng đó (không giống như các đính kèm hình ảnh mà nó là mật độ xác suất!). có cách nào để thực hiện việc này với geom_histogram không?

Trả lời

8

Tạo một số dữ liệu:

foo <- data.frame(bar=rnorm(100)) 

Histogram với bước Geom và đếm trên trục y:

ggplot(foo,aes(x=bar)) + stat_bin(geom="step") 

Histogram với bước Geom và mật độ trên trục y:

ggplot(foo,aes(x=bar)) + stat_bin(aes(y=..density..),geom="step") 

Và với "phần dữ liệu có rơi vào rằng bin":

ggplot(foo,aes(x=bar)) + stat_bin(aes(y=..count../sum(..count..)),geom="step") 

enter image description here

2

Có thể là những cách khác, đẹp hơn để làm điều này nhưng đây là một ý tưởng.

foo <- data.frame(bar = rnorm(100)) + theme_bw() 
p <- ggplot(data = foo, aes(x = bar, y = ..count../sum(..count..))) ## or aes(x = bar, y = ..density..) if you want that 
p + geom_histogram(size = 2, colour = "red", fill = "white") + geom_histogram(colour = "transparent", fill = "white") 

enter image description here

Edit:

geom_histogram(size = 2, colour = "red", fill = "white") tạo này enter image description here

tôi sửa độ dày của phác thảo để size = 2 để làm cho kết quả cuối cùng nhìn đẹp. Nó trông khủng khiếp ở giai đoạn này. Để loại bỏ các dòng nội thất bạn thêm geom_histogram(colour = "transparent", fill = "white") mà sẽ vẽ một biểu đồ trên bao gồm các dòng nội thất (và một số phác thảo đó là lý do tại sao tôi nghĩ rằng size = 2 có vẻ tốt đẹp)

+0

Ông có thể giải thích tại sao có hai cuộc gọi cho 'geom_histogram'? – user248237dfsf

+0

@ user248237dfsf Chỉ cần xóa phần thứ hai và xem điều gì sẽ xảy ra. Nó nên được rõ ràng. – Roland

+0

@Roland: Tôi thấy đó là một mẹo để cố gắng có được màu sắc/bước nhảy đúng ... nhưng tôi không thấy cách khái quát hóa trường hợp này khi 'colour' được đặt thành biến trong df để mã hóa các điều kiện khác nhau . – user248237dfsf

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