วิธีลดข้อมูลมิติสูงเพื่อการสร้างภาพข้อมูล


19

ฉันกำลังทำงานกับการจำลองทางกายภาพแบบ 2D และฉันกำลังรวบรวมข้อมูลในเวลาหลายจุด จุดที่ไม่ต่อเนื่องเหล่านี้มีลักษณะเป็นเส้นแนวตั้งโดยมีหลายเส้นในทิศทางตามแนวแกน ทำให้ชุดข้อมูลมีประสิทธิภาพ 4D

ตัวอย่างเช่นสมมติว่าฉันมีคะแนนสะสมที่ (X, Y) พิกัดของ:

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

และในแต่ละจุดฉันกำลังรวบรวมโดยที่คือความดัน,คืออุณหภูมิ,เป็นองค์ประกอบ X และ Y ของความเร็ว ในการวนซ้ำของการจำลองแต่ละครั้งตัวแปรเหล่านี้จะถูกเก็บไว้สำหรับจุดรวบรวมทั้งหมด 9 จุด ดังนั้นข้อมูลของฉันทั้งหมดจะต่อเนื่องในเวลาที่แต่ละจุดแยกในอวกาศP T U , V{P,T,U,V}PTU,V

ตัวอย่างเช่นข้อมูลสำหรับจุดเดียวจะมีลักษณะดังนี้:

แรงดันเทียบกับเวลาสำหรับจุดเดียว U-Velocity vs Time สำหรับจุดเดียว

ฉันสนใจที่จะแสดง, พูด, กดดันทุกจุดตลอดเวลาเพื่อแสดงคลื่นแนวตั้งและแนวแกน ถ้าฉันทำสิ่งนี้ตามบรรทัดเดียว (ทั้งแนวตั้งหรือแนวแกน) ฉันสามารถใช้พล็อตน้ำตกกับแกน (Y, เวลา, ความกดดัน) แต่ถ้าฉันมีเส้นแนวตั้ง 3 เส้นและแนวแกน 3 เส้นนี่ก็คือแปลงน้ำตก 6 อันเพื่อให้ได้ภาพการเคลื่อนที่ของคลื่นทั้งสองทิศทาง พิกัดเชิงพื้นที่เป็นตัวแปรที่ไม่ต่อเนื่องในขณะที่สนาม (ในกรณีนี้ความดัน) และเวลาจะต่อเนื่อง

จากตัวเลขข้างต้นแรงดันสูงสุดขนาดใหญ่ที่สามารถเคลื่อนที่ในทิศทาง X หรือ Yt0.000125

มีวิธีการแสดงพวกเขาทั้งหมดในครั้งเดียวหรือไม่? โดยปกติสามารถเพิ่มสีเพื่อทำให้มองเห็นมิติที่สี่ แต่มีวิธีอื่นที่เป็นไปได้หรือไม่ ฉันวางแผนที่จะพล็อตมันให้มากที่สุดเท่าที่จะทำได้เพื่อดูว่ามีอะไรเปิดเผยข้อมูลที่คนอื่นทำไม่ได้หรือเปล่า

เกิดอะไรขึ้นถ้าการจำลองเป็น 3D และฉันมีชุดข้อมูลที่เป็นผลลัพธ์ 5D สิ่งนั้นเปลี่ยนวิธีการสร้างภาพที่เป็นไปได้หรือไม่?


มิติทั้งหมดเป็นแบบแยกหรือบางส่วนเป็นแบบต่อเนื่องหรือไม่? ถ้าเป็นเช่นนั้น
naught101

(X, Y) ไม่ต่อเนื่องขณะที่ (P, เวลา) ต่อเนื่อง
tpg2114

ฉันขอแนะนำให้พิจารณาการหันหน้าเข้าหาทางเลือก (หรือส่วนประกอบ) เป็น 3-d
Michael Bishop

มันจำเป็นต้องเป็นพล็อตคงที่สามารถพิมพ์ได้หรือไม่? ถ้าไม่คุณสามารถแสดงข้อมูลของคุณเป็นชุดข้อมูลที่หมดเวลา ถ้าฉันจำได้อย่างถูกต้องซอฟต์แวร์ JMP ก็ทำสิ่งนั้น
Emil Friedman

1
@ naught101 อัปเดต acoordingly
tpg2114

คำตอบ:


14

ฉันมีข้อมูลเจ็ดมิติด้วยตัวเอง ถึงแม้ว่าผมจะตัดสินสุดท้ายสำหรับการเลือกขนาดของ 3 มิติชิ้นผ่านทางเลือกหนึ่งคือขนานพิกัดแปลง ใช้งานได้กับขนาดที่กำหนดเอง! จาก Wikipedia:

พิกัดขนานเป็นวิธีการทั่วไปในการแสดงภาพเรขาคณิตในมิติสูงและการวิเคราะห์ข้อมูลหลายตัวแปร

ในการแสดงชุดของจุดในพื้นที่ n- มิติฉากหลังจะถูกวาดประกอบด้วยเส้นขนาน n เส้นแนวตั้งและเว้นระยะ จุดในพื้นที่ n- มิติแสดงเป็นรูปหลายเหลี่ยมด้วยจุดยอดบนแกนขนาน ตำแหน่งของจุดสุดยอดบนแกน i สอดคล้องกับพิกัด i ของจุดนั้น

ป้อนคำอธิบายรูปภาพที่นี่


นั่นเป็นโครงเรื่องที่ยอดเยี่ยม การใช้สีที่ยอดเยี่ยม ตำนานจะดีกว่าที่ด้านข้างและสั่งซื้อใหม่เพื่อให้ตรงกับสีในแกนสุดท้าย แต่มันไม่สำคัญ
naught101

3
@ naught101 มาจาก Wikipedia อย่าลังเลที่จะส่งรุ่นที่ปรับปรุงแล้วที่นั่น ;-)
gerrit

นี่เป็นเทคนิคที่ยอดเยี่ยม !!
Sohaib ฉัน

4

แผนการแปลงคู่ : นี่ไม่ใช่วิธีการลดขนาด แต่ก็เป็นวิธีที่ดีมากในการรับภาพรวมอย่างรวดเร็วว่าความสัมพันธ์ที่มีความหมายบางอย่างอาจอยู่ที่ใด ใน R แพ็กเกจฐานมีpairs()ฟังก์ชันซึ่งดีสำหรับข้อมูลต่อเนื่อง (มันแปลงทุกอย่างเป็นต่อเนื่อง) ฟังก์ชั่นที่ดีกว่าคือggpairs()จากGGallyแพ็คเกจ:

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

พล็อตไอริสคู่


3

การวิเคราะห์องค์ประกอบหลักโดยทั่วไปเป็นตัวเลือกที่ดีสำหรับการลดขนาดในกรณีส่วนใหญ่ฉันไม่แน่ใจว่าจะเหมาะกับปัญหาของคุณโดยเฉพาะ แต่จะพบว่ามิติมุมฉากตามที่ตัวอย่างข้อมูลส่วนใหญ่ถูกจับ หากคุณพัฒนาใน R คุณสามารถใช้prcomp()เพื่อแปลงเมทริกซ์จุดข้อมูลดั้งเดิมของคุณเป็นรูปแบบ PCA


2

ต่อไปนี้เป็นสองวิธีในการแสดงภาพข้อมูลสามมิติด้วย ggplot2 คุณสามารถรวมวิธี (กริด facet, สี, รูปร่าง, ฯลฯ ) เพื่อเพิ่มมิติของกราฟิกของคุณ

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)

ป้อนคำอธิบายรูปภาพที่นี่


นั่นคือพล็อตเดียวกันทำซ้ำ 12 ครั้ง แต่มีไฮไลต์ที่แตกต่างกันใช่ไหม วิธีที่น่าสนใจในการดูข้อมูลนั้น! อีกวิธีหนึ่งก็คือการพล็อตเฉพาะไทม์ซีรี่แบบดั้งเดิมดั้งเดิมจากนั้นจึงทำการเรียงตามเดือนและพล็อตจุดเดือนนั้นอยู่ด้านบน แนวคิดเดียวกัน แต่มีไทม์ "ของจริง" ในนั้น
naught101

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()เช่นนี้ พระเจ้ายี้ฉันรัก ggplot2
naught101

1

p=pmeanป้อนคำอธิบายรูปภาพที่นี่

พล็อตนี้จะแสดงโปรไฟล์ความเร็วในสถานที่ตามแนวแกนที่แตกต่างกันให้แผนที่ 2 มิติของสนามไหล เส้นแนวตั้งแสดงถึงความเร็ว 0 ภูมิภาคที่ไม่มีจุดไม่ใช่ส่วนหนึ่งของโดเมนการคำนวณ แน่นอนว่านี่ไม่ใช่การขยายข้อมูล 3D อย่างง่ายดาย ...


สี่เหลี่ยมสีขาวคืออะไร
naught101

นี่คือการแสดงเขตข้อมูลการไหล มันลื่นไหลไปรอบ ๆ มุมโปรไฟล์แสดงถึงความเร็วในสถานที่ตามแนวแกนที่แตกต่างกัน ...
FrenchKeldar

ตกลง. มันสมเหตุสมผลแล้วที่จะเพิ่มคำอธิบายลงในคำตอบ เนื้อเรื่องค่อนข้างทึบโดยตัวของมันเอง ...
naught101
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.