Ich möchte eine Folge von konzentrischen Kreisen als Gitter in einer Zeichnung von Punkten enthalten. Ziel ist es, dem Betrachter eine Vorstellung davon zu geben, welche Punkte in der Handlung ungefähr gleich groß sind. Ich habe einen Hack, dies zu tun:Konzentrische Kreise wie ein Gitter, zentriert am Ursprung
add_circle_grid <- function(g,ncirc = 10){
gb <- ggplot_build(g)
xl <- gb$panel$ranges[[1]]$x.range
yl <- gb$panel$ranges[[1]]$y.range
rmax = sqrt(max(xl)^2+max(yl)^2)
theta=seq(from=0,by=.01,to=2*pi)
for(n in 1:ncirc){
r <- n*rmax/ncirc
circle <- data.frame(x=r*sin(theta),y=r*cos(theta))
g<- g+geom_path(data=circle,aes(x=x,y=y),alpha=.2)
}
return(g+xlim(xl)+ylim(yl))
}
xy<-data.frame(x=rnorm(100),y=rnorm(100))
ggplot(xy,aes(x,y))+geom_point()
ggg<-add_circle_grid(ggplot(xy,aes(x,y))+geom_point())
print(ggg)
Aber ich frage mich, ob es ein ggplot Weg, dies zu tun. Ich habe auch überlegt, Polarkoordinaten zu verwenden, aber es erlaubt mir nicht, x- und y-Grenzen auf die gleiche Weise festzulegen. Schließlich hätte ich nichts dagegen, kleine Textbeschriftungen, die den Radius jedes Kreises angeben.
BEARBEITEN Vielleicht ist dies zu viel verlangt, aber es gibt zwei andere Dinge, die ich möchte.
- Die Achsgrenzen sollten gleich bleiben
- können diese Arbeit mit Facetten (die über ggplot_build getan werden kann)? Soweit ich das beurteilen kann, müssten Sie die Facetten irgendwie herausfinden, wenn ich die Kreise dynamisch hinzufügen möchte.
Es scheint, dass die Antworten deuten darauf hin, es gibt Möglichkeiten, es :-) noch zu tun fragen wenn es einen Weg gibt, es mit Polarkoordinaten zu machen. – dpmcsuss