Um Pfeile in ggplot zu zeichnen, verwende ich geom_segment und arrow = arrow(). Ich möchte, dass die Pfeilhöhe der Segmentbreite (oder -größe) entspricht. Der Pfeil erkennt jedoch keine Variablen direkt aus dem Datenargument in ggplot und man muss data.frame angeben, der die Variable mit dem Operator $ enthält. Dies führt zu einer Disjunktion zwischen den Werten, die zum Zeichnen der Linie verwendet werden, und denjenigen, die zum Zeichnen der Pfeilspitze verwendet werden (der größte Pfeilkopf kann sich auf dem dünnsten Segment befinden).Erstellen eines Pfeilkopfes mit passender Größe (oder lwd) in ggplot2
Beispiel:
d <- structure(list(Process = structure(c(2L, 1L, 1L, 1L, 2L, 2L,
1L, 1L, 2L, 1L, 2L), .Label = c("First", "Second"), class = "factor"),
x.sink = c(1, 3, 1, 2, 2, 3, 3, 2, 2, 2, 2), y.sink = c(1,
1, 1, 2, 2, 1, 1, 1, 1, 2, 2), x.source = c(2, 2, 2, 2, 2,
2, 2, 1, 1, 1, 3), y.source = c(2, 2, 2, 1, 1, 1, 1, 1, 1,
2, 1), offset = c(1, 1, 1, -1, -1, -1, -1, -1, -1, 1, -1),
Std.Flux = c(0.179487179487179, 0.170940170940171, 0.944444444444444,
0.0854700854700855, 0.726495726495726, 0.128205128205128,
0.213675213675214, 0.213675213675214, 0.128205128205128,
0.106837606837607, 1)), .Names = c("Process", "x.sink", "y.sink",
"x.source", "y.source", "offset", "Std.Flux"), class = "data.frame", row.names = c(NA,
-11L))
p <- qplot(data=d,
#alpha=I(0.4),
colour=Process,
size=Std.Flux,
xlim=c(0,4),
ylim=c(0,3),
x=x.source+as.numeric(Process)/10,
y=y.source+as.numeric(Process)/10,
xend=x.sink+as.numeric(Process)/10,
yend=y.sink+as.numeric(Process)/10,
geom="segment",
arrow = arrow(type="closed",
length = unit(d$Std.Flux,"cm")))
print(p)
Irgendwelche Vorschläge?
Ich rechne damit, es ist ein Versehen; es lohnt sich, eine Feature-Anfrage auf GitHub – baptiste