आर

2013-01-07 17 views
5

में पैकेज 'सर्कुलर' का उपयोग करके गुलाब आरेख में डिब्बे को कैसे स्थानांतरित करें मैंने एन के बुनियादी पहलुओं के साथ आर और गुलाब.diag फ़ंक्शन में 'परिपत्र' पैकेज का उपयोग करके स्थान डेटा के लिए डिग्री में पहलुओं के गुलाब आरेख बनाए। , एनई, ई, आदि, कुल 8 डिब्बे के लिए। हालांकि, डिब्बे पहलुओं को झुका नहीं देते हैं। दूसरे शब्दों में, पहला बिन 0-45 से मिलता है, दूसरा 45 से 9 0 तक होता है, और इसी तरह, जो अजीब तरीकों से पहलू डेटा को पूल कर रहा है। डिब्बे को बदलने के लिए कोई तरीका है तो 0, 45, 9 0, आदि किनारों के बजाय डिब्बे का केंद्र हैं?आर

rose.diag(Degrees$Degrees, bins=8,zero=pi/2, units = 'degrees', rotation='clock') 
+0

मुझे नहीं लगता कि इस स्रोत कोड हैकिंग के बिना संभव है के लिए इस तरह के आंकड़ों का उपयोग कर रहे हैं उत्सुक के लिए

rose.diag(cdat, bins = 20, col="darkgrey", prop=1.3, axes=FALSE, add=TRUE) 

पुनश्च: कोड के नीचे आप पुराने आंकड़ा (बाएं ऊपर) देता है। मुझे लगता है कि कुछ बिंदु पर ऐसा करना याद है, लेकिन कोड को खोदना होगा ... –

+0

@BenBolker स्रोत कोड हैकिंग के बिना संभव है लेकिन साजिश हैकिंग के साथ :) – agstudy

उत्तर

4

मुझे लगता है कि बेन सही है कि यह आसानी से rose.diag साथ नहीं किया जा सकता है, इसलिए यहाँ एक समाधान ggplot2 उपयोग कर रहा है:

library(ggplot2) 
Degrees <- runif(100, 0, 360) 
rose <- ggplot(mapping = aes(x = Degrees)) + 
    stat_bin(breaks = (0:8 - 0.5)/8 * 360) + 
    scale_x_continuous(
    breaks = 0:7/8*360, 
    labels = c("N", "NE", "E", "SE", "S", "SW", "W", "NW") 
    ) + 
    coord_polar(start=-pi/8) 
rose 

enter image description here यह आदर्श नहीं हो सकता है क्योंकि नहीं सुविधाओं के सभी में rose.diag में ggplot2 में आसान समकक्ष हैं।

+0

'rose.diag' – agstudy

+0

के साथ विचलन के लिए मेरा जवाब देखें @ आपके जवाब में अशिष्टता कच्चे साजिश तत्वों के कुशल हेरफेर दिखाती है। मैं व्यक्तिगत रूप से ggplot2 प्रतिपादन की उपस्थिति को प्राथमिकता देता हूं और मुझे इसे संशोधित करना आसान लगता है। – orizon

+0

नहीं। मैं बस डिब्बे को स्थानांतरित करने के लिए ओप प्रश्न का उत्तर दे रहा हूं। हो सकता है कि मैंने जो किया वह कुशल है, लेकिन मैं अपना प्रतिपादन पसंद करता हूं :) – agstudy

1

आपके पास gridBase पैकेज का उपयोग करके ऐसा कुछ हो सकता है। हम rose.diag का उपयोग करते रहते हैं और हम hack साजिश का उपयोग करते हैं, एक बार जब हम अच्छे व्यूपोर्ट के स्थान पर होते हैं।

enter image description here

require(grid) 
#grid.newpage() 
##generate some data 
x <- circular(runif(50, 0, 2*pi)) 
bins <- 8 
rotation <- 'clock' 
##tcl =0(no ticks), tcl.text=-2 to write away the ticks marks 
rose.diag(x, bins=bins,zero=0, rotation='clock', 
      tcl=0,tcl.text=-2,col='#80FF00FF') 
library(gridBase) 
## I use the plot viewport 
vp <- baseViewports()$plot 
pushViewport(vp)   ## here we go! 
## radial transformation 
at <- (0:bins - 0.5)/bins * 2 * pi 

## ticks 
grid.segments(x0 = .95*sin(at), y0 = 0.95*cos(at), 
       x1 = 1.05*sin(at), y1 = 1.05*cos(at), 
       default.units = "native") 
## ticks labels 
grid.text(x = 1.1*sin(at), default.units = "native", 
      y = 1.1*cos(at), gp=gpar(col='red'), 
      label = c("N", "NE", "E", "SE", "S", "SW", "W", "NW")) 

मैं कुछ ट्यूनिंग जोड़ने दृश्य पहलू के लिए, लेकिन सवाल का पहले से ही इस सवाल का जवाब ऊपर कुछ कोड।

## dashed lines from the center for visual aspect 
grid.segments(x0 = .95*sin(at), y0 = 0.95*cos(at), 
       x1 = 0, 0, 
       gp = gpar(lty="dashed"), 
       default.units = "native") 

## circle just to get the same color of text 
grid.circle(r=1,x=0,y=0,gp=gpar(col='red',fill=NA,lwd=2), default.units = "native") 
## remove the viewport 
popViewport(1) 
0

क्यों अपना मूल डेटा घुमाएं? N.B. नीचे cdat डिग्री (शून्य = पीआई/2) में है, जबकि शून्य 2 * पीआई

rose.diag (cdat - 10, डिब्बे = 20, col = "darkgrey", prop = 1.3, axes = FALSE, ऐड = सही, शून्य = pi/2-pi// चिपकाने कुछ 20)

कॉपी मैं पर काम कर रहा हूँ:

library(circular) 

raw <-read.csv("C:\\Users\\Andy\\Desktop\\business\\research\\Oxford\\MichelDish\\r.csv", header=T) 
raw <-na.omit(raw) 


cdat <- circular(raw [, c ("kandUnknown")],type="angles",units="degrees", rotation="clock", zero=pi/2) 


plot(cdat, cex=1.1, bin=720, stack=TRUE, sep=0.035, shrink=1.8, tcl.text=.2) 


ticks.circular(circular(seq(0,2*pi,pi/8)), zero=pi/2, rotation='clock', tcl=0.075) 



rose.diag(cdat - 10, bins = 20, col="darkgrey", prop=1.3, axes=FALSE, add=TRUE, zero = pi/2 - pi/20) 

lines(density.circular(cdat, bw=40), lwd=2, lty=1) 

enter image description here

nb , हम जैसे http://www.sciencedirect.com/science/article/pii/S0950329315001068

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

  • कोई संबंधित समस्या नहीं^_^