Ich habe einen Datenrahmen, in dem eine einzelne abhängige Variable (y) eine ~ log-lineare Beziehung mit der unabhängigen Variablen x1 und eine ~ sigmoidale Beziehung mit der unabhängigen Variablen x2 hat.Heatmap mit einer Logarithmusachse
df<-data.frame(x1 = rep(c(0:10),11),
x2 = rep(c(0:10), each=11),
logx1 = log(rep(c(0:10),11)+1),
y = 0)
for(i in 1:nrow(df)) df[i,4] = exp(df[i,2]) * (1/(1+exp(-df[i,1])))
Ich möchte in Bezug auf Variation in x1 und x2 mit einer Heatmap in y Änderungen anzuzeigen:
ggplot(df, aes(x=x1, y=x2, fill=y))+
theme_bw()+
scale_fill_distiller(palette = "Spectral")+
geom_tile(size=0.01)
aber es ist schwer zu sehen, die Änderung in y in Bezug auf x1, so dass ich wollen x1 auf einer logarithmischen Skala zeichnen:
ggplot(df, aes(x=logx1, y=x2, fill=y))+
theme_bw()+
scale_fill_distiller(palette = "Spectral")+
geom_tile(size=0.01)+
aber es führt zu großen Räume zwischen den Daten, wie auf eine kontinuierliche Oberfläche der Farbe gegen: gaps in heat map
Ich habe versucht:
x1 zu einem Faktor Umwandlung und Plotten:
df$x1<-factor(df$x1, levels = sort(unique(df$x1)))
als Raster mit interpolieren Plotten:
geom_raster(interpolate = TRUE
Umwandlung der Achse selbst:
scale_x_continuous(breaks = c(0,1,10)+1, limits = c(0,10)+1, trans = 'log')
chan ging plot size mit coord_equal() und coord_fixed(),
die Auflösung der Daten erhöhen (d. h. schätzen Sie y für jede 0,001 Änderung in x1)
aber ich kann die Räume nicht weggehen!
Ich bin nicht unbedingt auf einer Heatmap verkauft, aber ich muß in Bezug sowohl auf x1 und x2 Variation in y angezeigt werden, und ich muß es ggplot in tun
auf einem Protokoll Achse Plotten y würde für die eigentlichen Daten unangemessen ich habe, aber es ist sicherlich eine gute Lösung für dieses Beispiel (ein MWE). Ich habe am Ende etwas ähnliches zu Ihrem zweiten Posting verwendet und es funktioniert gut, danke! – cmhoove14