विज़ुअलाइज़ेशन के लिए उच्च आयामी डेटा को कम करने के तरीके


19

मैं एक 2 डी शारीरिक सिमुलेशन पर काम कर रहा हूं और मैं कई बिंदुओं पर समय पर डेटा एकत्र कर रहा हूं। ये असतत बिंदु ऊर्ध्वाधर रेखाओं के साथ हैं, जो अक्षीय दिशा में कई पंक्तियों के साथ हैं। यह डाटासेट को प्रभावी ढंग से 4D बनाता है।

उदाहरण के लिए, मान लें कि मेरे पास (X, Y) के निर्देशांक में संग्रह बिंदु हैं:

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

और प्रत्येक बिंदु पर मैं एकत्र कर रहा हूं जहां दबाव है, तापमान है, X- और Y- वेग के घटक हैं। सिमुलेशन के प्रत्येक पुनरावृत्ति पर, इन चर को सभी 9 संग्रह बिंदुओं के लिए संग्रहीत किया जाता है। इसलिए अंतरिक्ष में प्रत्येक असतत बिंदु पर मेरा सारा डेटा समय पर जारी है।{पी,टी,यू,वी}पीटीयू,वी

उदाहरण के लिए, एक बिंदु के लिए डेटा इस तरह दिखेगा:

एक बिंदु के लिए दबाव बनाम समय एक बिंदु के लिए U- वेग बनाम समय

मुझे हर समय ऊर्ध्वाधर और अक्षीय तरंगों को दिखाने के लिए सभी बिंदुओं पर दबाव दिखाने, कहने में रुचि है। अगर मुझे एक ही लाइन (या तो ऊर्ध्वाधर या अक्षीय) के साथ ऐसा करना था, तो मैं कुल्हाड़ियों (वाई, समय, दबाव) के साथ एक झरना साजिश का उपयोग कर सकता हूं। लेकिन अगर मेरे पास 3 ऊर्ध्वाधर रेखाएं और 3 अक्षीय रेखाएं हैं, तो दोनों दिशाओं में तरंग गति की पूरी तस्वीर प्राप्त करने के लिए यह 6 झरना भूखंड होगा। स्थानिक विचलन चर होते हैं जबकि फ़ील्ड (इस मामले में दबाव) और समय निरंतर होता है।

उदाहरण के लिए उपरोक्त आंकड़ों में, में बड़े दबाव की चोटी X या Y दिशा में यात्रा कर सकती है।टी0.000125

क्या इन सबको एक साथ दिखाने की कोई विधि है? आमतौर पर रंग को "चौथा" आयाम बनाने के लिए जोड़ा जा सकता है, लेकिन क्या एक और संभव दृष्टिकोण है? मैं यह देखने के लिए कई तरीकों से योजना बना रहा हूं कि अगर कोई जानकारी दूसरों को नहीं पता चलता है, तो कृपया किसी भी विचार को पिच करें।

क्या होगा अगर सिमुलेशन 3 डी थे और मेरे पास 5 डी का परिणामी डेटासेट था? क्या यह संभव दृश्य तरीकों को बदल देता है?


क्या सभी आयाम असतत हैं, या कुछ निरंतर हैं? यदि हां, तो कौन से हैं?
n

(X, Y) असतत हैं जबकि (P, समय) निरंतर हैं।
tpg2114

मैं 3-डी
माइकल बिशप

क्या इसे एक स्थिर भूखंड होना चाहिए जिसे मुद्रित किया जा सके? यदि नहीं, तो आप अपने डेटा को प्लॉट्स की समयबद्ध श्रृंखला के रूप में दिखा सकते हैं। अगर मुझे सही से याद है, तो JMP सॉफ्टवेयर उस तरह का काम करता है।
एमिल फ्राइडमैन

1
@ naught101 अद्यतित acoordingly।
tpg2114

जवाबों:


14

मेरे पास स्वयं कुछ सात-आयामी डेटा था। हालांकि मैं अंत में 3-आयामी स्लाइस-थ्रू के एक छोटे से चयन के लिए बस गया, एक विकल्प समानांतर निर्देशांक प्लॉट है । यह आयामों की एक मनमानी संख्या के लिए काम करता है! विकिपीडिया से:

समानांतर निर्देशांक उच्च-आयामी ज्यामिति को दर्शाने और बहुभिन्नरूपी डेटा का विश्लेषण करने का एक सामान्य तरीका है।

एन-डायमेंशनल स्पेस में बिंदुओं के एक सेट को दिखाने के लिए, एक बैकड्रॉप को समांतर रेखाओं से मिलकर बनाया जाता है, आमतौर पर ऊर्ध्वाधर और समान रूप से दूरी। एन-डायमेंशनल स्पेस में एक बिंदु को समानांतर अक्ष पर वर्टिकल के साथ पॉलीलाइन के रूप में दर्शाया जाता है; ith अक्ष पर शीर्ष की स्थिति बिंदु के ith समन्वय से मेल खाती है।

यहाँ छवि विवरण दर्ज करें


वह एक महान कथानक है। रंग का उत्कृष्ट उपयोग। किंवदंती बेहतर होगी, और आखिरी धुरी पर रंगों का मिलान करने के लिए फिर से आदेश दिया जाएगा, लेकिन यह महत्वपूर्ण नहीं है।
n

3
@ naught101 यह विकिपीडिया से है, वहाँ एक बेहतर एक भेजने के लिए स्वतंत्र महसूस ;-)
gerrit

यह एक बेहतरीन तकनीक है !!
सोहैब I

4

जोड़े भूखंड : यह आयामीता में कमी का तरीका नहीं है, लेकिन यह एक अच्छा तरीका है कि जहां कुछ सार्थक रिश्ते झूठ हो सकते हैं, उनका त्वरित अवलोकन कर सकें। आर में, बेस पैकेज में pairs()फ़ंक्शन होता है , जो निरंतर डेटा के लिए अच्छा है (यह सब कुछ को निरंतर में परिवर्तित करता है)। पैकेज ggpairs()से एक बेहतर कार्य है GGally:

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

आइरिस जोड़े की साजिश


3

मुख्य घटक विश्लेषण आम तौर पर ज्यादातर मामलों में आयाम में कमी के लिए एक अच्छा विकल्प है, मुझे यकीन नहीं है कि यह आपकी विशेष समस्या के लिए उपयुक्त होगा, लेकिन यह ऑर्थोगोनल आयामों को ढूंढेगा जिसके साथ डेटा नमूनों के सबसे भिन्नता पर कब्जा कर लिया गया है। यदि आप R में विकसित होते हैं, तो आप prcomp()अपने मूल मैट्रिक्स के डेटा बिंदुओं को पीसीए के रूप में परिवर्तित करने के लिए उपयोग कर सकते हैं ।


2

यहाँ ggplot2 के साथ 3-D डेटा को चित्रित करने के कुछ तरीके दिए गए हैं। आप अपने ग्राफिक की गतिशीलता को बढ़ाने के लिए दृष्टिकोण (पहलू ग्रिड, रंग, आकार आदि) को जोड़ सकते हैं।

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 बार दोहराया गया है, लेकिन अलग-अलग लाइनों के साथ हाइलाइट किया गया है, है ना? निश्चित रूप से उस डेटा को देखने का एक दिलचस्प तरीका है! दूसरा तरीका यह होगा कि केवल मूल मासिक समय, और फिर महीने के हिसाब से निर्धारित किया जाए, और इसके शीर्ष पर महीने के बिंदुओं की साजिश की जाए। एक ही विचार है, लेकिन वहाँ में "वास्तविक" समय के साथ।
n

इस तरह 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 प्यार करता हूँ।
n

1

पी=पीnयहाँ छवि विवरण दर्ज करें

यह प्लॉट विभिन्न अक्षीय स्थानों पर वेग प्रोफाइल दिखाता है, जो आपको फ्लोफील्ड का 2 डी मानचित्र प्रदान करता है। ऊर्ध्वाधर रेखाएं 0 वेग का प्रतिनिधित्व करती हैं। बिना डॉट्स वाले क्षेत्र कम्प्यूटेशनल डोमेन का हिस्सा नहीं हैं। बेशक यह आसानी से 3 डी डेटा के लिए एक्स्टेंसिबल नहीं है ...


सफेद वर्ग किस लिए है?
n

यह एक प्रवाह क्षेत्र प्रतिनिधित्व है। यह एक कोने के आसपास एक प्रवाह है, अलग-अलग अक्षीय स्थानों पर प्रोफाइल वेग का प्रतिनिधित्व करते हैं ...
FrenchKheldar

ठीक है। इसका उत्तर देने के लिए कुछ विवरण जोड़ना समझदारी होगी। यह कथानक अपने आप में काफी अपारदर्शी है ...
naught101
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.