Ich habe ein Beispiel, in dem ich einige Eigenschaften von Sequenzabgleichungen mit ggplot hervorheben möchte. Ich benutze geom_tile und möchte zwei Sätze unterschiedlich gefärbter Kacheln für zwei Score-Eigenschaften haben. Ich kann nur eins visualisieren.ggplot2 mehrere Skalen/Legenden pro Ästhetik, erneut besucht
Ich bin mir der Grenzen einer Skala pro Ästhetik bewusst (and the logic behind it), aber vielleicht hat jemand eine Idee, wie man es für Fälle wie diesen hackt, wo es sinnvoll wäre, verschiedene Farbskalen in einem "Plot" zu haben.
Vielleicht manuell die Grobs mit Zugabe, aber ich würde nicht wissen, wo ... beginnen
eine zusätzliche Frage: aus irgendeinem Grund die override.aes=list(shape = "A")
funktioniert nicht, irgendwelche Ideen warum?
eine weitere: jede Methode, Text proportional zur Größe der Fliese (oder umgekehrt) zu skalieren?
library(ggplot2)
library(grid)
pd = data.frame(
letters = strsplit("AGTGACCGACTATCATAGTGACCCAGAATCATAGTGACCGAGTATGAT", "")[[1]],
species = rep(c("Human", "Armadillo", "Porcupine"), each=16),
x = rep(1:16, 3),
change = c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,
0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0),
score1 = c(0,0,0,0,0,0,1,1,2,2,2,3,3,3,4,3,
0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
score2 = c(0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,
0,0,0,0,2,2,2,2,0,0,0,0,0,0,0,0,
0,0,0,0,3,3,3,3,0,0,0,0,0,0,0,0)
)
ggplot(pd[pd$score1 != 0,], aes(x=x, y=species)) +
coord_fixed(ratio = 1.5, xlim=c(0.5,16.5), ylim=c(0.5, 3.5)) +
geom_tile(aes(fill=score1)) +
scale_fill_gradient2("Score 1", limits=c(0,4),low="#762A83", mid="white", high="#1B7837", guide=guide_colorbar(title.position="top")) +
geom_text(data=pd, aes(label=letters, color=factor(change)), size=rel(5), family="mono") +
scale_color_manual("Change", values=c("black", "#F2A11F"), labels=c("None", "Some"), guide=guide_legend(direction="vertical", title.position="top", override.aes=list(shape = "A"))) +
theme(panel.background=element_rect(fill="white", colour="white"),
axis.title = element_blank(),
axis.ticks.y = element_blank(),
axis.text.y = element_text(family="mono", size=rel(2)),
axis.text.x = element_text(size=rel(0.7)),
legend.text = element_text(size=rel(0.7)),
legend.key.size = unit(0.7, "lines"),
legend.position = "bottom", legend.box = "horizontal") +
ggtitle("What about Score2?")
Dank aufnehmen koshke, ich habe in Betracht gezogen, aber es ist keine ausreichende visuelle Hinweis diese Eigenschaft darzustellen. Diese Alignments können eine Länge von hundert oder mehr Zeichen haben und können mehrere Dutzend Arten enthalten. Daher sind die Buchstaben relativ klein und es gibt oft keinen Platz, um ihre Größe zu verändern. Darüber hinaus ist manchmal das Ergebnis eine kontinuierliche Variable und es wird sehr schwierig sein, die relativen Mengen von einer Sequenz zur anderen zu erkennen. Ich fürchte, ich brauche etwas mehr "visual" – Krizbi
Um nur ein reales Beispiel zu geben: [Hier ist eine vollständige Ausrichtung] (http://i.imgur.com/wB4prkv.png) – Krizbi
@Krizbi Aktualisiert finden Sie bitte . – kohske