2016-05-27 28 views
0

Ich möchte eine Figur wie density map in polar coordinates konstruieren (Ich bin nicht erlaubt, Zahlen in meinen Beitrag einzubetten, bitte folgen Sie dem Link, um es zu sehen). Es ist eine Dichtekarte in Polarkoordinaten. Ich kenne R nicht, also habe ich auch this post gefunden, ich weiß immer noch nicht, wie ich bekommen soll, was ich will.Wie wird eine Dichtekarte in Polarkoordinaten mit R aufgetragen?

Momentan habe ich die Streudaten in kartesischen Koordinaten. Ich wäre dankbar, wenn mir jemand helfen könnte. Danke vielmals.

========================= Update: Meine Lösung ================= =============

cart2pol <- function(x){ 
# x: (x,y) 
y <- x[2] 
x <- x[1] 
r <- sqrt(x^2 + y^2) 
t <- atan2(y,x)/pi*180 
c(r,t) 
} 

angle <- apply(cockpit.data[c('x1','y1')],1,cart2pol)[2,] 
r <- apply(cockpit.data[c('x1','y1')],1,cart2pol)[1,] 
observations <-table(cut(angle,breaks=c(seq(-180,180,by=15))),cut(r,breaks=c(seq(0,sight,by=25)))) 

mm <- melt(observations,c('angle','r')) 

labels <- seq(-172.5,172.5,length.out = 24) - 90 
labels[labels<=0] <- labels[labels<=0] + 360 
labels.y <- as.vector(rbind('', seq(0,sight,by=50)[-1])) 
rosedensity <- ggplot(mm,aes(angle,r,fill=value))+geom_tile()+ 
    coord_polar(start=pi/2, direction = -1) + ggtitle('Rose Density') + 
    scale_fill_gradientn(name="Frequency", colours = rev(rainbow(32)[1:23])) + #terrain.colors(100) , brewer.pal(10,'Paired') 
    scale_x_discrete(labels = labels) + scale_y_discrete(labels = labels.y) + 
    xlab('Angle') + ylab('R') + 
    theme(
     plot.title = element_text(color="red", size=28, face="bold.italic"), 
     axis.title.y = element_text(color="black", size=24, face="bold"), 
     axis.title.x = element_text(color="black", size=24, face="bold"), 
     axis.text=element_text(size=20), 
     legend.justification=c(1,0), legend.position=c(1,0), 
     legend.background = element_rect(fill="gray90", size=.1, linetype="dotted") 
    ) 
ggsave(rosedensity, file=paste(dirOutput,'rosedensity.png',sep=''), width=8, height=8) 

Hier ist meine Output Figure.

Ich fand die Lösung von this answer.

+1

Willkommen bei Stackoverflow! Damit wir Ihnen am besten helfen können, empfehle ich Ihnen, zuerst diesen Beitrag zu lesen: http://stackoverflow.com/help/mcve. Befolgen Sie anschließend den Code, den Sie geschrieben haben, um das Problem zu lösen. – gariepy

Antwort

2

Man könnte es so versuchen:

library(ggplot2) 
ggplot(faithful, aes(x = eruptions, y = waiting)) + 
    stat_density_2d(
    geom = "tile", 
    aes(fill = ..density..), 
    n=c(40, 10), 
    contour = F 
) + 
    scale_fill_gradientn(colours=rev(rainbow(32)[1:23])) + 
    coord_polar() 

enter image description here