Ich habe eine Grafik mit 12 Variablen in zwei Gruppen unterteilt. Ich kann keine Facetten verwenden, aber mit Farbe und Form konnte ich die Visualisierung leicht verständlich machen. Es gibt jedoch einige Punkte, die sich (teilweise oder ganz) überschneiden. Ich verwende Jitter, um mit diesen umzugehen, aber wie Sie aus der beigefügten Grafik sehen können, führt dies dazu, dass alle Punkte verschoben werden, nicht nur die mit Überlappung. Bedingte Verwendung von Jitter in ggplot2 mit geom_point
Gibt es eine Möglichkeit, Jitter zu verwenden oder bedingt auszuweichen? Noch besser, gibt es eine Möglichkeit, die sich teilweise überlappenden Punkte nebeneinander zu legen? Wie Sie sehen können, ist meine X-Achse diskrete Kategorien und eine leichte Verschiebung nach links/rechts spielt keine Rolle. Ich habe versucht, mit binaxis='y'
Dotplot, aber das verdirbt komplett die X-Achse.
Bearbeiten: This graph hat es geschafft, genau das zu tun, was ich suche.
Weitere Bearbeitung: Hinzufügen des Codes hinter dieser Visualisierung.
disciplines <- c("Comp. Sc.\n(17.2%)", "Physics\n(19.6%)", "Maths\n(29.4%)", "Pol.Sc.\n(40.4%)", "Psychology\n(69.8%)")
# To stop ggplot from imposing alphabetical ordering on x-axis
disciplines <- factor(disciplines, levels=disciplines, ordered=T)
# involved aspects
intensive <- c(0.660, 0.438, 0.515, 0.028, 0.443)
comparative <- c(0.361, 0.928, 0.270, 0.285, 0.311)
wh_adverbs <- c(0.431, 0.454, 0.069, 0.330, 0.577)
past_tense <- c(0.334, 0.229, 0.668, 0.566, 0.838)
present_tense <- c(0.680, 0.408, 0.432, 0.009, 0.996)
conjunctions <- c(0.928, 0.207, 0.162, -0.299, -0.045)
personal <- c(0.498, 0.521, 0.332, 0.01, 0.01)
interrogative <- c(0.266, 0.202, 0.236, 0.02, 0.02)
sbj_objective <- c(0.913, 0.755, 0.863, 0.803, 0.913)
possessive <- c(0.896, 0.802, 0.960, 0.611, 0.994)
thrd_person <- c(-0.244, -0.265, -0.310, -0.008, -0.384)
nouns <- c(-0.602, -0.519, -0.388, -0.244, -0.196)
df1 <- data.frame(disciplines,
"Intensive Adverbs"=intensive,
"Comparative Adverbs"=comparative,
"Wh-adverbs (WRB)"=wh_adverbs,
"Verb: Past Tense"=past_tense,
"Verb: Present Tense"=present_tense,
"Conjunctions"=conjunctions,
"Personal Pronouns"=personal,
"Interrogative Pronouns"=interrogative,
"Subjective/Objective Pronouns"=sbj_objective,
"Possessive Pronouns"=possessive,
"3rd-person verbs"=thrd_person,
"Nouns"=nouns,
check.names=F)
df1.m <- melt(df1)
grp <- ifelse(df1.m$variable %in% c('3rd-person verbs','Nouns'), 'Informational Features', 'Involved Features')
g <- ggplot(df1.m, aes(group=grp, disciplines, value, shape=grp, colour=variable))
g <- g + geom_hline(yintercept=0, size=9, color="white")
g <- g + geom_smooth(method=loess, span=0.75, level=0.95, alpha=I(0.16), linetype="dashed")
g <- g + geom_point(size=4, alpha=I(0.7), position=position_jitter(width=0.1, height=0))
g <- g + scale_shape_manual(values=c(17,19))
Sie ein reproduzierbares Beispiel (Daten + Code) zur Verfügung stellen sollten andere mit ihm spielen lassen ... – agstudy
Added-Code. Hoffentlich hilft das :-) –
Danke für den Code. P.S. Ihr Diagramm sieht nicht so sauber aus wie das biomedizinische Beispiel, da Ihre Y-Werte überall zu finden sind. Sie können jedoch die x-Werte in der Reihenfolge unten anordnen. –
beroe