Dies ist eine etwas andere Frage als ein früherer Beitrag (ggplot hexbin shows different number of hexagons in plot versus data frame).Automatisierte Möglichkeit, ggplot Hexbin daran zu hindern, Geome aus Achsen zu schneiden
Ich verwende hexbin(), um Daten in sechseckige Objekte zu zerlegen, und ggplot(), um die Ergebnisse zu plotten. Ich bemerke, dass manchmal die Sechsecke am Rand der Handlung halbiert sind. Unten ist ein Beispiel.
library(hexbin)
library(ggplot2)
set.seed(1)
data <- data.frame(A=rnorm(100), B=rnorm(100), C=rnorm(100), D=rnorm(100), E=rnorm(100))
maxVal = max(abs(data))
maxRange = c(-1*maxVal, maxVal)
x = data[,c("A")]
y = data[,c("E")]
h <- hexbin(x=x, y=y, xbins=5, shape=1, IDs=TRUE, xbnds=maxRange, ybnds=maxRange)
hexdf <- data.frame (hcell2xy (h), hexID = [email protected], counts = [email protected])
ggplot(hexdf, aes(x = x, y = y, fill = counts, hexID = hexID)) +
geom_hex(stat = "identity") +
coord_cartesian(xlim = c(maxRange[1], maxRange[2]), ylim = c(maxRange[1], maxRange[2]))
Dies schafft eine Grafik, wo ein Sechseck ist an der Spitze und ein Sechseck abgeschnitten wird am Boden abgeschnitten:
Ein weiterer Ansatz, den ich hart Code ausprobieren kann, ist, Wert (hier 1.5), der zu den Grenzen der x- und y-Achse addiert wird. Dies scheint das Problem zu lösen, da keine Sechsecke mehr abgeschnitten werden.
ggplot(hexdf, aes(x = x, y = y, fill = counts, hexID = hexID)) +
geom_hex(stat = "identity") +
scale_x_continuous(limits = maxRange * 1.5) +
scale_y_continuous(limits = maxRange * 1.5)
Doch obwohl der zweite Ansatz, das Problem in diesem Fall löst, ist der Wert von 1,5 willkürlich. Ich versuche, diesen Prozess für eine Vielzahl von Daten und eine Vielzahl von Behältergrößen und Sechskantgrößen zu automatisieren, die verwendet werden könnten. Gibt es eine Lösung, um alle Sechsecke im Diagramm vollständig sichtbar zu machen, ohne einen willkürlichen Wert fest codieren zu müssen, der für bestimmte Fälle zu groß oder zu klein sein kann?
bearbeitet gerade die Antwort auf enthalten die Möglichkeit, die Anzahl der Bins anstelle der Binwidth manuell festzulegen – lbusett