Làm thế nào để hình dung một hàm mật độ 3 chiều?


19

Cách tốt nhất về mặt đồ họa để trực quan hóa hàm mật độ 3 chiều là gì? Như trong tôi muốn hình dung ?

z= =fX,Y(x,y)

Không cần thiết nhưng Rmã cho điều này sẽ là tuyệt vời.


3
Tôi đã thay đổi nó để được thống kê nhiều hơn.

1
Nếu có điều gì đó thiếu về các tùy chọn đó, sẽ hữu ích nhất nếu bạn có thể chỉ định đó là gì và chính xác nhu cầu của bạn là gì để chúng tôi có thể tìm thấy một loại hình ảnh phù hợp hơn với chúng.
gung - Phục hồi Monica

1
Những điều đó là đủ chắc chắn nhưng các tùy chọn khác của tôi là gì /

3
@nico, tôi không nghĩ rằng điều này sẽ lạc đề / phù hợp hơn với SO ngay cả trước khi có thay đổi. Yêu cầu mã được chỉ định là tùy chọn và data-visualizationlà một phần của nhiệm vụ của chúng tôi.
gung - Phục hồi Monica

1
@whuber, câu hỏi ban đầu chỉ là "trực quan hóa bộ dữ liệu 3D" (bạn có thể thấy nó trong lịch sử chỉnh sửa). Tôi coi đó là chủ đề, mặc dù quan điểm của bạn, như được thực hiện, là rõ ràng chính xác.
gung - Phục hồi Monica

Câu trả lời:


25

z(x,y)R

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

Dưới đây là hai lô bổ sung có các tính năng vẽ đẹp hơn so với các ô được đưa ra trước đó. nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây Vì vậy, tùy thuộc vào sở thích của bạn sẽ quyết định cách bạn muốn trực quan hóa các bộ dữ liệu 3 chiều.

Here is the `R` code used to generate these four mentioned plots.
library(fields)
library(scatterplot3d)

#Data for illistarition
x = seq(-10, 10, length= 100)
y = x
f = function(x, y) { r = sqrt(x^2+y^2); 10 * sin(r)/r }
z = outer(x, y, f)
z[is.na(z)] = 1

#Method 1
#Perspective Plot
persp(x,y,z,col="lightblue",main="Perspective Plot")

#Method 2
#Contour Plot
contour(x,y,z,main="Contour Plot")
filled.contour(x,y,z,color=terrain.colors,main="Contour Plot",)

#Method 3
#Heatmap
image(x,y,z,main="Heat Map")
image.plot(x,y,z,main="Heat Map")

#Method 4
#3-D Scatter Plot
X = expand.grid(x,y)
x = X[,1]
y = X[,2]
z = c(z)
scatterplot3d(x,y,z,color="lightblue",pch=21,main="3-D Scatter Plot")

Bản đồ nhiệt đó là chói mắt.
gung - Phục hồi Monica

@Gung, (hoặc bất kỳ ai thực sự) bạn có biết nếu có thêm một thanh bên cho biết giá trị nào của màu sắc của bản đồ nhiệt tương ứng không? Đó là tất nhiên bằng cách sử dụng lệnh hình ảnh.

3
Tôi nghĩ rằng bạn muốn image.plot()lệnh để thêm một thanh màu. Ngoài ra, filled.contour()tạo một âm mưu tương tự với một thanh màu được thêm vào theo mặc định.
Macro


2
Khi chúng tôi ở đây, tôi sẽ chỉ ra rằng bạn có thể tùy chỉnh bảng màu theo bất kỳ cách nào bạn muốn ... Cách dễ nhất (nhưng có lẽ không phải là tốt nhất) để làm điều này là sử dụng colorRampPalette(), ví dụ: nếu bạn nhập a = colorRampPalette(c('dark blue','blue','light blue','yellow','orange', 'red','dark red'))nó sẽ tạo ra một chức năng atạo ra một xấp xỉ rời rạc của một liên tục màu đi qua các màu đó. Đối số alà một số nguyên xác định độ phân giải của xấp xỉ rời rạc này.
Macro
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.