Ich versuche, eine benutzerdefinierte Skala/AchsTransformation zu verwenden, etwa so:GGplot benutzerdefinierte Skala Transformation mit benutzerdefinierten Zecken
library(ggplot2)
library(scales)
dat <- data.frame(
time.tot = c(407.17, 168.83, 127.8, 108.88, 69.04, 68.5, 59.76, 407.17,
168.83, 127.8, 108.88, 69.04, 68.5, 59.76, 407.17, 168.83, 127.8,
108.88, 69.04, 68.5, 59.76),
error = c(0, 0.01, 0.05, 0.1, 0.5, 0.7, 1, 1.91e-06, 0.00229, 0.00884,
0.0172, 0.128, 0.128, 0.22, 1.43e-08, 0.000337, 0.00121, 0.00221,
0.0123, 0.0123, 0.0213, 0, 0.01, 0.05, 0.1, 0.5, 0.7, 1, 1.91e-06,
0.00229, 0.00884, 0.0172, 0.128, 0.128, 0.22, 1.43e-08, 0.000337,
0.00121, 0.00221, 0.0123, 0.0123, 0.0213),
type = rep(c("A", "B", "C"), each=7))
eps <- 1e-8
tn <- trans_new("logpeps",
function(x) log(x+eps),
function(y) exp(y)-eps,
domain=c(0, Inf),
breaks=c(0, 0.1, 1))
ggplot(dat, aes(x=time.tot, y=error, color=type)) +
geom_line() + geom_point() + coord_trans(y = tn)
Wie Sie sehen können, die y-Achse in der Tat verwandelt durch meine angegebene Funktion, y=log(x+eps)
. Das Argument breaks
hat jedoch keinen Effekt. Ich bin mir sicher, dass ich es falsch spezifiziere, aber ich bin nicht in der Lage, aus der Dokumentation herauszufinden, wie es funktioniert. Irgendwelche Vorschläge?
Ich frage mich auch, wie/ob die kurvigen Linien zu "reparieren" - sieht aus wie sie im Originalmaßstab gezeichnet werden und dann mit meiner benutzerdefinierten tn
danach umgewandelt werden.
ggplot(dat, aes(x=time.tot, y=error, color=type)) +
geom_line() + geom_point() + coord_trans(y = tn)
+ scale_y_continuous(breaks = c(0,0.1,1))
Auch die nicht-geraden Linien sind das erwartete Verhalten von coord_trans
: direkt
Perfect, danke! Ich füge Ihrer Antwort eine Bearbeitung hinzu, um die Handlung zu zeigen, mit der ich gelandet bin. –