Các cách để giảm dữ liệu chiều cao cho trực quan hóa


19

Tôi đang làm việc trên một mô phỏng vật lý 2D và tôi đang thu thập dữ liệu kịp thời tại một số điểm. Các điểm riêng biệt này nằm dọc theo các đường thẳng đứng, với nhiều đường theo hướng dọc trục. Điều này làm cho tập dữ liệu có hiệu quả 4D.

Chẳng hạn, giả sử tôi có các điểm thu thập tại tọa độ (X, Y) của:

  • (0,0), (1,0), (2,0)
  • (0,1), (1,1), (2,1)
  • (0,2), (1,2), (2,2)

và tại mỗi điểm tôi đang thu thập {P,T,Bạn,V} trong đó P là áp suất, T là nhiệt độ, Bạn,V là các thành phần X và Y của vận tốc. Ở mỗi lần lặp của mô phỏng, các biến này được lưu trữ cho tất cả 9 điểm thu thập. Vì vậy, tất cả dữ liệu của tôi là liên tục trong thời gian tại mỗi điểm riêng biệt trong không gian.

Ví dụ: dữ liệu cho một điểm sẽ trông như sau:

Áp lực so với thời gian cho một điểm U-Velocity vs Time cho một điểm duy nhất

Tôi quan tâm đến việc hiển thị, nói, Áp lực tại mọi thời điểm để hiển thị sóng dọc và trục. Nếu tôi làm điều này dọc theo một đường đơn (dọc hoặc trục), tôi có thể sử dụng một biểu đồ thác nước với các trục (Y, thời gian, Áp lực). Nhưng nếu tôi có 3 đường thẳng đứng và 3 đường trục, đây sẽ là 6 ô thác để có được bức tranh hoàn chỉnh về chuyển động sóng theo cả hai hướng. Các tọa độ không gian là các biến rời rạc trong khi trường (trong trường hợp này là Áp suất) và thời gian là liên tục.

t0,000125

Có một phương pháp để hiển thị tất cả chúng cùng một lúc? Thông thường màu sắc có thể được thêm vào để hiển thị kích thước "thứ tư", nhưng có cách tiếp cận nào khác không? Tôi dự định vẽ nó theo nhiều cách nhất có thể để xem liệu có gì tiết lộ thông tin mà người khác không, vì vậy xin vui lòng đưa ra bất kỳ ý tưởng nào.

Điều gì xảy ra nếu mô phỏng là 3D và tôi có bộ dữ liệu kết quả 5D? Điều đó có thay đổi các phương pháp trực quan có thể?


Là tất cả các kích thước rời rạc, hoặc là một số liên tục? Nếu vậy, cái nào là cái nào?
ness101

(X, Y) rời rạc trong khi (P, thời gian) liên tục.
tpg2114

Tôi khuyên bạn nên xem xét khía cạnh như là một thay thế (hoặc bổ sung) cho 3-d
Michael Giám mục

Có cần phải là một cốt truyện tĩnh có thể được in? Nếu không, bạn có thể hiển thị dữ liệu của mình dưới dạng một loạt các ô bị mất thời gian. Nếu tôi nhớ chính xác, phần mềm JMP sẽ thực hiện điều đó.
Emil Friedman

1
@ naught101 Cập nhật từ ngữ.
tpg2114

Câu trả lời:


14

Tôi đã có một số dữ liệu bảy chiều bản thân mình. Mặc dù cuối cùng tôi đã giải quyết được một lựa chọn nhỏ cho các lát cắt 3 chiều, một tùy chọn là Biểu đồ tọa độ song song . Điều này làm việc cho một số lượng kích thước tùy ý! Từ Wikipedia:

Các tọa độ song song là một cách phổ biến để hình dung hình học chiều cao và phân tích dữ liệu đa biến.

Để hiển thị một tập hợp các điểm trong không gian n chiều, một phông nền được vẽ bao gồm n đường thẳng song song, thường là dọc và cách đều nhau. Một điểm trong không gian n chiều được biểu diễn dưới dạng đa giác với các đỉnh trên các trục song song; vị trí của đỉnh trên trục thứ i tương ứng với tọa độ thứ i của điểm.

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


Đó là một âm mưu tuyệt vời. Sử dụng màu sắc tuyệt vời. Truyền thuyết sẽ tốt hơn ở bên cạnh, và được sắp xếp lại để phù hợp với màu sắc trên trục cuối cùng, nhưng nó không quan trọng.
ness101

3
@ naught101 Đó là từ Wikipedia, cảm thấy tự do để gửi một một cải tiến có ;-)
Gerrit

Đây là một kỹ thuật tuyệt vời !!
Sohaib I

4

Sơ đồ cặp : Đây không phải là một phương pháp giảm kích thước, nhưng nó là một cách thực sự tốt để có được một cái nhìn tổng quan nhanh về nơi mà một số mối quan hệ có ý nghĩa có thể nằm. Trong R, gói cơ sở chứa pairs()hàm, rất tốt cho dữ liệu liên tục (nó chuyển đổi mọi thứ thành liên tục). Một chức năng tốt hơn là ggpairs(), từ GGallygói:

library(GGally)
ggpairs(iris, colour='Species')

Iris cặp âm mưu


3

Phân tích thành phần chính nói chung là một lựa chọn tốt để giảm kích thước trong hầu hết các trường hợp, tôi không chắc nó sẽ phù hợp với vấn đề cụ thể của bạn, nhưng nó sẽ tìm thấy kích thước trực giao dọc theo đó hầu hết các biến thể của mẫu dữ liệu được ghi lại. Nếu bạn phát triển trong R, bạn có thể sử dụng prcomp()để chuyển đổi ma trận điểm dữ liệu ban đầu của mình sang dạng PCA.


2

Dưới đây là một vài cách mô tả dữ liệu 3-D bằng ggplot2. Bạn có thể kết hợp các cách tiếp cận (lưới mặt, màu sắc, hình dạng, v.v.) để tăng tính chiều cho đồ họa của bạn.

doInstall <- TRUE  # Change to FALSE if you don't want packages installed.
toInstall <- c("ggplot2")
if(doInstall){install.packages(toInstall, repos = "http://cran.r-project.org")}
lapply(toInstall, library, character.only = TRUE)

# Air passenger data. ts converted to long matrix:
myData <- data.frame(Year = c(floor(time(AirPassengers) + .01)),
                     Month = c(cycle(AirPassengers)), 
                     Value = c(AirPassengers))
# Easy conversion code from: http://stackoverflow.com/a/4973859/479554

# Convert month numbers to names, using a built-in constant:
myData$Month <- factor(myData$Month)
levels(myData$Month) <- month.abb

# One possibility:
zp1 <- ggplot(myData,
              aes(x = Year, y = Value, colour = Month))
zp1 <- zp1 + geom_line()
print(zp1)  # This is fine, if you can differentiate between the colors

# Another possibility:
zp2 <- ggplot(myData,
              aes(x = Year, y = Value))
zp2 <- zp2 + geom_line()
zp2 <- zp2 + facet_wrap(~ Month)
print(zp2)  # This is fine, but it's hard to compare across facets

# A third possibility; plotting reference lines across each facet:
referenceLines <- myData  # \/ Rename
colnames(referenceLines)[2] <- "groupVar"
zp3 <- ggplot(myData,
              aes(x = Year, y = Value))
zp3 <- zp3 + geom_line(data = referenceLines,  # Plotting the "underlayer"
                       aes(x = Year, y = Value, group = groupVar),
                       colour = "GRAY", alpha = 1/2, size = 1/2)
zp3 <- zp3 + geom_line(size = 1)  # Drawing the "overlayer"
zp3 <- zp3 + facet_wrap(~ Month)
zp3 <- zp3 + theme_bw()
print(zp3)

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


Đó là cùng một cốt truyện, lặp đi lặp lại 12 lần, nhưng với các dòng khác nhau được tô sáng, phải không? Chắc chắn là một cách thú vị để xem dữ liệu đó! Một cách khác là chỉ vẽ các biểu đồ thời gian hàng tháng ban đầu, sau đó sắp xếp theo tháng và vẽ các điểm tháng trên đầu trang. Cùng một ý tưởng, nhưng với thời gian "thực sự" trong đó.
n101 101

Như thế này : APdf <- data.frame(Time=c(time(AirPassengers)), Year=c(floor(time(AirPassengers))), Month=c(cycle(AirPassengers)), Value=c(AirPassengers)) ; APdf$Month <- month.abb[APdf$Month] ; ggplot(APdf, aes(x=Time, y=Value)) + facet_wrap(facets='Month') + geom_line(data=APdf[,c(1,4)], colour='gray') + geom_point(). Chúa ơi, tôi yêu ggplot2.
ness101

1

p= =pmemộtnnhập mô tả hình ảnh ở đây

Biểu đồ này hiển thị các cấu hình vận tốc tại các vị trí trục khác nhau, cung cấp cho bạn bản đồ 2D của trường lưu lượng. Các đường thẳng đứng biểu thị 0 vận tốc. Các vùng không có dấu chấm không phải là một phần của miền tính toán. Tất nhiên, điều này không dễ dàng mở rộng cho dữ liệu 3D ...


Hình vuông màu trắng để làm gì?
ness101

Đây là một đại diện trường dòng chảy. Đó là một dòng chảy xung quanh một góc, các cấu hình thể hiện vận tốc tại các vị trí trục khác nhau ...
FrenchKainedar

Được. Nó sẽ có ý nghĩa để thêm một số mô tả cho câu trả lời. Cốt truyện khá mờ đục bởi chính nó ...
ness101
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.