Ho un grafico con 12 variabili diviso in due gruppi. Non posso usare sfaccettature, ma usando colori e forme, sono stato in grado di rendere la visualizzazione facile da capire. Tuttavia, ci sono alcuni punti che si sovrappongono (parzialmente o totalmente). Sto usando jitter per gestire questi, ma come puoi vedere dal grafico allegato, questo porta a spostare tutti i punti, non solo quelli con sovrapposizione. Uso condizionale del jitter in ggplot2 con geom_point
C'è un modo di usare jitter o schivare condizionatamente? Ancora meglio, c'è un modo per mettere i punti parzialmente sovrapposti fianco a fianco? Come puoi vedere, il mio asse x è costituito da categorie discrete e un leggero spostamento verso sinistra/destra non ha importanza. Ho provato a usare dotplot con binaxis='y'
, ma questo rovina completamente l'asse x.
Modifica: This graph è riuscito a fare esattamente quello che sto cercando.
Ulteriori modifiche: aggiunta del codice alla base di questa visualizzazione.
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))
si dovrebbe fornire un esempio riproducibile (dati + codice) di lasciare che gli altri giocare con esso ... – agstudy
codice aggiunto. Speriamo che questo aiuti :-) –
Grazie per il codice. Post scriptum la tua trama non sarà pulita come nell'esempio biomedico perché i tuoi valori Y sono dappertutto, ma puoi ancora allineare i valori x in ordine con lo qui sotto. –
beroe