2013-06-05 27 views
12

Tôi đang gặp khó khăn khi tạo biểu đồ trong R. Vấn đề là tôi nói với nó để làm 5 thùng nhưng nó làm cho 4 và tôi nói để làm cho 5 và nó làm cho 8 người trong số họ.Số lượng thùng chính xác trong Biểu đồ trong R

data <- c(5.28, 14.64, 37.25, 78.9, 44.92, 8.96, 19.22, 34.81, 33.89, 24.28, 6.5, 4.32, 2.77, 17.6, 33.26, 52.78, 5.98, 22.48, 20.11, 65.74, 35.73, 56.95, 30.61, 29.82); 

hist(data, nclass = 5,freq=FALSE,col="orange",main="Histogram",xlab="x",ylab="f(x)",yaxs="i",xaxs="i") 

Mọi ý tưởng về cách khắc phục?

+2

Các tệp trợ giúp cho các hàm 'R' khá rõ ràng, tho 'Tôi sẽ cấp cho một nhu cầu đọc chúng một cách cẩn thận. Luôn luôn là một ý tưởng tốt để bắt đầu ở đó. –

Trả lời

16

Sử dụng đối số phá vỡ:

hist(data, breaks=seq(0,80,l=6), 
     freq=FALSE,col="orange",main="Histogram", 
     xlab="x",ylab="f(x)",yaxs="i",xaxs="i") 

enter image description here

+0

Cảm ơn! Điều này cũng tuyệt vời để so sánh phân phối tần số hoặc tệp PDF. –

8

Các nguyên quy định như lập luận cho nclass được sử dụng như là một gợi ý:

số là một gợi ý chỉ

Một giải pháp khác là cut vector của bạn thành một số quy định của các nhóm và vẽ kết quả:

plot(cut(data, breaks = 4)) 

enter image description here

2

Nếu bạn không phản đối việc sử dụng một cái gì đó khác hơn so với đồ họa cơ bản, luôn có cách ggplot2 điều thực hiện:

thư viện (ggplot2)

dữ liệu < - data.frame (x = data)

ggplot(data, aes(x=x))+ 
     geom_histogram(binwidth=18,color="black", fill="grey")+ 
     scale_x_continuous(breaks=c(0,20,40,60,80) 

ggplot2 có tài liệu tuyệt vời tại: docs.ggplot2.org/current/

Đối với ví dụ biểu đồ cụ thể: http://docs.ggplot2.org/current/geom_histogram.html

7

xây dựng trên câu trả lời từ Rob Hyndman:

Có lẽ một giải pháp chung chung hơn là làm cho các điểm ngắt xem xét giá trị minimun và maximun của dữ liệu và số lần ngắt = number_of_bins + 1.

hist(data,breaks=seq(min(data),max(data),l=number_of_bins+1), 
    freq=FALSE,col="orange", 
    main="Histogram",xlab="x",ylab="f(x)",yaxs="i",xaxs="i") 
1

tôi muốn được khá chính xác về các điểm dữ liệu của tôi:

hist(data,breaks = seq(min(data),max(data),by=((max(data) - min(data))/(length(data)-1)))) 

này nên tự động quá trình với rất ít đầu vào bằng tay.