Ich bin dieses Problem noch einmal in Zusammenhang trat ich vor etwa einem Jahr. Ich möchte, dass mein "Colourbar" -Führer effektiv auf einer logarithmischen Skala angezeigt wird, so dass der Take-away bei der Betrachtung darin besteht, dass zunehmend dunklere Blauwerte eine größere Bedeutung haben.Ändern der Größe/manuell geben Brüche auf Farbbalken-Guide von geom_tile und ersetzt Y-Achsen-Labels
Mit dem folgenden Code generieren ich das Bild unten:
pz <- ggplot(dat.m, aes(x=variable,y=Category)) +
geom_tile(aes(fill=value)) +
xlab(NULL) + ylab(NULL) +
scale_fill_gradientn(colours=c("#000066","#0000FF","#DDDDDD","white"),
values=c(0,0.05,0.050000000000001,1.0),
breaks=c(0, 0.000001, 0.01, 0.05, 1),
guide = "colourbar") +
theme_bw()+
theme(panel.background = element_blank(),
panel.border = element_blank(),
axis.ticks.x = element_blank(),
axis.ticks.y = element_blank()) +
theme(legend.position="top",
legend.text = element_text(angle=45),
axis.text.x = element_text(angle=45)
)
Oder ich es als eine "Legende" angezeigt werden kann im Gegensatz zu einem "colourbar":
Aber was ich wirklich wünsche, ist etwas wie dieses:
Ich habe versucht, 'trans = "log"' (scale_fill_gradientn (trans = "log")) hinzufügen, aber es gibt viele Nullen in meine Daten, die ein Problem verursacht. Wenn Sie irgendwelche Ideen haben, würde es sehr geschätzt werden!
Zurück Wortlaut:
Ich versuche, eine Heatmap von p-Werte für verschiedene Proben für verschiedene Kategorisierungen zu machen. Es gibt zwei Dinge, die ich auf diesem Grundstück ändern möchte:
Ich mag die Legende von meinem
geom_tile
Grundstück anzupassen das untere Ende der Legende Skala zu betonen, während immer noch das volle Spektrum der Gradienten aufrechterhalten - ähnlich wie es aussehen würde, wenn es eine logarithmische Skala wäre. So wird im Wesentlichen der Weiß-zu-Blau-Übergang von 1,0-0,05 und der Blau- zu Dunkelblau-Übergang von 0,05-0,00 in etwa gleich groß sein. Gibt es eine Möglichkeit, den Farbbalken manuell anzupassen?Ich möchte die Y-Achsennamen ersetzen, so dass ich meine "leere" Zeilenbezeichnung entfernen kann. Beachten Sie, dass die Kategorien hier einfach als Buchstaben dargestellt werden, aber in meinem realen Datensatz sind sie lange Namen. Ich habe "Dummy" -Zeilen von Daten eingefügt, um Kategorisierungen in Chucks zu teilen und die Kacheln in jedem Block so angeordnet, dass sie von höchst signifikant zu nicht signifikant gehen - ich bin mir sicher, dass es eine bessere Lösung dafür gibt viele gescheiterte Versuche anderer Ideen fand ich auf Stack-Überlauf! Ich habe versucht, sie mit
scale_y_discrete
zu beschriften, aber das wird mit der oben genannten Bestellung durcheinander gebracht.
Hilfe mit einem dieser Probleme wird sehr geschätzt werden!Hier
ist ein Beispieldatensatz:
dput(dat.m)
structure(list(Category = structure(c(12L, 11L, 10L, 9L, 8L,
7L, 6L, 5L, 4L, 3L, 2L, 1L, 12L, 11L, 10L, 9L, 8L, 7L, 6L, 5L,
4L, 3L, 2L, 1L, 12L, 11L, 10L, 9L, 8L, 7L, 6L, 5L, 4L, 3L, 2L,
1L), class = "factor", .Label = c("j", "i", "empty2", "h", "empty1",
"g", "f", "e", "d", "c", "b", "a")), variable = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L), .Label = c("b2", "c1", "c2"), class = "factor"),
value = c(7.40214650772221e-06, 0.0075828339, 0.1825924627,
0.0384381317, 0.0440256659, 0.3659284985, 0.9777569144, 1,
0.0075828339, 1, 0.2193606406, 0.3659284985, 0.0004289756,
0.0011541045, 0.0004289756, 0.4400885491, 0.6121402215, 0.6724032426,
0.2735924085, 1, 0.018824582, 1, 0.4386503891, 0.4249526456,
1.05094571578633e-05, 0.0027216795, 0.715979827, 0.0050376405,
0.7473334763, 0.9053300832, 1, 1, 0.0015392848, 1, 0.039679469,
0.0950327519)), .Names = c("Category", "variable", "value"
), row.names = c(NA, -36L), class = "data.frame")
Und hier ist mein Code:
col_blue <- c("#FFFFFF","#000099","#000066","#000033")
ggplot(dat.m, aes(x=variable,y=Category)) +
geom_tile(aes(fill=value)) +
xlab(NULL) + ylab(NULL) +
scale_fill_gradientn(colours=col_blue, values=c(1,0.05,0.01,0),guide="colorbar") +
theme_mary(base_size=12)
UPDATE:
So, jetzt habe ich geändert t Er codiert als solcher mit den folgenden Ergebnissen. Ich komme näher an das, was ich erreichen möchte, aber ich würde gerne mit den Proportionen der Farbleiste spielen, um den Farbverlauf von 0,05-0,0 etwas deutlicher zu zeigen.
col_blue <- c("#FFFFFF","#000099","#000066","#000033")
ggplot(dat.m, aes(x=variable,y=Category)) +
geom_tile(aes(fill=value)) +
xlab(NULL) + ylab(NULL) +
scale_fill_gradientn(colours=col_blue, values=c(1,0.05,0.01,0), guide=FALSE) +
scale_colour_gradientn(guide = "colourbar", limits = c(0,1),breaks=c(1,0.05,0.01,0),values=c(1,0.05,0.01,0),colours=c("#FFFFFF","#000099","#000066","#000033"))
Woher kam 'theme_mary'? –
Ich weiß, das ist ein alter Kommentar, aber da ich gerade die Frage hier aktualisiert habe, ist die Antwort - theme_mary war ein benutzerdefiniertes Thema, das ich zuvor gemacht hatte. Ich habe es aus dem aktualisierten Code entfernt. Entschuldigung für jede Verwirrung! – ONeillMB1