2010-09-25 7 views
12

मैंने इसकी खोज की और पाया कि {grid} के साथ एक छवि को घुमाने के तरीके हैं, और कुछ भूखंडों के लिए आप अपने घूर्णन के साथ खेल सकते हैं (उदाहरण के लिए साजिश (x, x) के बजाय प्लॉट (x, y)) ।क्या आर (बेस ग्राफिक्स) में एक साजिश घुमाने के लिए संभव है?

हालांकि, मैं जानना चाहता हूं कि आर में एक साजिश को घुमाने के लिए एक सामान्य विधि है (जो आधार ग्राफिक्स में उत्पन्न किसी भी साजिश के लिए काम करेगा)?

+2

क्या आप "डेटा घुमाने" के बारे में बात कर रहे हैं (जैसा कि आपका उदाहरण इंगित करेगा) या "ग्राफ को घूर्णन करना" (यानी ग्राफिक रूप से इसे 35 डिग्री दाएं करने के लिए) – nico

+0

निको - बी धन्यवाद :) –

+0

तो मुझे यहां उपयोगी जानकारी https://stat.ethz.ch/pipermail/r-help/2003-May/033157.html –

उत्तर

5

मैं निश्चित रूप से निश्चित हूं कि आधार ग्राफिक्स के साथ यह सामान्य रूप से ऐसा करने का कोई तरीका नहीं है। हालांकि gridBase पैकेज है जो किसी को 'प्लॉट' में बेस ग्राफिक्स और ग्रिड ग्राफिक्स को मिश्रित करने की अनुमति देता है। पैकेज के लिए विगनेट में ग्रिड viewports में बेस ग्राफिक्स को एम्बेड करने पर एक अनुभाग है, ताकि आप यह देखने के लिए वहां देख सकें कि क्या आप अपने भूखंडों के चारों ओर एक ग्रिड रैपर पका सकते हैं और रोटेशन करने के लिए ग्रिड का उपयोग कर सकते हैं। सुनिश्चित नहीं है कि यह एक व्यवहार्य मार्ग है, लेकिन जहां तक ​​मुझे पता है, आपके प्रश्न

क्रैन पर है और लेखक ग्रिड पैकेज के लेखक पॉल मुरेल हैं ।

शब्दचित्र ब्राउज़ कर के बाद, मैं समस्याओं में गोलियों में से एक और पृष्ठ पर सीमाएं अनुभाग, जिसमें कहा गया है कि यह आधार ग्राफिक्स एम्बेड करने के लिए में एक घुमायाgrid व्यूपोर्ट संभव नहीं है ध्यान दें। तो मुझे लगता है कि आप भाग्य से बाहर हैं।

+0

अच्छा जवाब! (हालांकि मुझे वह पढ़ना पसंद नहीं आया) धन्यवाद! –

2

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

+0

घुमाएं = आउटपुट प्लॉट बनाने के लिए (उदाहरण के लिए) 90 डिग्री घुमाए गए। –

+0

क्या आपका मतलब * पूरे * साजिश है? एक्सिस, टेक्स्ट, टिकटें इत्यादि? यह एक स्क्रीन ग्राफिक्स डिवाइस पर, या एक पोस्टस्क्रिप्ट डिवाइस पर व्यर्थ लगता है, आप कागज के सापेक्ष घुमावदार साजिश का उत्पादन करने के लिए शायद क्षैतिज = TRUE/FALSE का उपयोग कर सकते हैं। या svg() ग्राफिक्स डिवाइस का उपयोग करें और फिर svg फ़ाइल को inkscape में लोड करें, सभी का चयन करें और 90 डिग्री घुमाएं। आउटपुट प्लॉट 90 डिग्री घूर्णन करने के सभी वैध तरीके हैं। – Spacedman

+0

यह सच है - लेकिन मैं सोच रहा था कि आर में ऐसा करने का कोई तरीका है :) –

2

एक समारोह rotate_plot तरह

rotate_plot(some_base_plot(x, y, ...)) 

इस्तेमाल किया जा करने के लिए संभव है क्योंकि आधार भूखंड का सबसे कोई मान नहीं है नहीं है।

भूखंडों में से कुछ दौर आप साजिश ड्राइंग चाहते आप जो रास्ता चुनने के लिए अनुमति देने के लिए एक horiz तर्क होते हैं। इसे कार्यान्वित करने के तरीके को देखने के लिए barplot.default पर एक नज़र डालें। (चेतावनी:। यह गंदा है)

@ ucfagls के सुझाव gridBase उपयोग करने के लिए अपने सबसे अच्छे शर्त है। मुरेल के आर ग्राफिक्स के Appendix B में इसके उपयोग के कुछ उदाहरण हैं।

+0

धन्यवाद रिची - मुझे जवाब का दुख है, लेकिन यह एक जवाब कम नहीं है। मैं समय के उद्देश्यों के लिए "उत्तर" ucfagls उत्तर के रूप में चिह्नित करेंगे। बेस्ट, टैल –

4

3 डी Scatterplots स्पिनिंग

तुम भी plot3D (एक्स, वाई, जेड) RGL पैकेज में समारोह का उपयोग कर एक इंटरैक्टिव 3 डी scatterplot बना सकते हैं। यह एक कताई 3 डी स्कैटरप्लॉट बनाता है जिसे माउस के साथ घुमाया जा सकता है। पहले तीन तर्क एक्स, वाई, और जेड संख्यात्मक वैक्टर हैं जो अंक का प्रतिनिधित्व करते हैं। col = और आकार = अंक के रंग और आकार को क्रमशः नियंत्रित करें।

# Spinning 3d Scatterplot 
library(rgl) 

plot3d(wt, disp, mpg, col="red", size=3) 
7

आप ग्राफिक निर्यात कर सकता है, इसे वापस में पढ़ा है, और प्रदर्शित यह एक rasterGrob, कहते हैं, (या एक rasterImage मैट्रिक्स घूर्णन के बाद, या एक grImport Grob अगर आप वेक्टर पथ चाहते हैं)

के रूप में घुमाया
plot(1:10, rnorm(10)) 
library(grid) 
cap <- grid.cap() 
grid.newpage() 
grid.raster(cap, vp=viewport(angle=30)) 

नई gridGraphics पैकेज अब एक बेहतर विकल्प हो सकता है।

नोट: यह Rstudio के ग्राफिक्स डिवाइस के साथ काम नहीं कर रहा है, संभवतः उन्होंने grid.cap लागू नहीं किया है।

enter image description here

+3

आपका कोड काम नहीं करता है! 'UseMethod में त्रुटि ("as.raster"): कक्षा के किसी ऑब्जेक्ट पर लागू' as.raster 'के लिए कोई लागू विधि "NULL" ' –

+1

मुझे एक ही त्रुटि मिल रही है :( – user2543622

4

यह gridGraphics पैकेज के माध्यम से संभव तरह का हालांकि यह किनारों पर थोड़ा किसी न किसी तरह महसूस करता है (?grid.echo में उदाहरण मेरे लिए बिल्कुल काम नहीं करते),

plot(1:10, rnorm(10)) 

library(gridGraphics) 

grab_grob <- function(){ 
    grid.echo() 
    grid.grab() 
} 

g <- grab_grob() 
grid.newpage() 
pushViewport(viewport(width=0.7,angle=30)) 
grid.draw(g) 

enter image description here

संबंधित मुद्दे