Domanda

Ho un dataFrame che sembra qualcosa di simile:

| id | length_bgn | length_end |
--------------------------------
| 1  |   209      |    215     |
| 2  |   324      |    125     |
| 3  |   167      |    156     |
| .. |   ...      |    ...     |
--------------------------------
.

Vorrei fare un dispersolo con il minimo della lunghezza (per riga) sull'asse x e il massimo per fila sull'asse y.Ho provato:

qplot(min(length_bgn, length_end), max(length_bgn, length_end), data=df)
.

Tuttavia questo traccia un singolo punto del minimo di entrambe le colonne contro il massimo di entrambe le colonne.Sto usando le funzioni sbagliate?O sarebbe meglio manipolare in qualche modo il dataframe?Si prega di scusare qualsiasi ingenuità, sono ancora abbastanza nuovo a r e ggplot2.

Qualsiasi aiuto sarebbe molto apprezzato.

Modifica: trama di esempio utilizzando il codice sopra:

Esempio di sbagliatore

È stato utile?

Soluzione

EDIT

library("ggplot2")

df <- read.table(text = " id  length_bgn  length_end 
        1     209          215     
 2     324          125     
 3     167          156     ", header=TRUE)

df$x <- apply(df[,c(2,3)], 1, min)
df$y <- apply(df[,c(2,3)], 1, max)


qplot(x, y, data=df)

Altri suggerimenti

@gauden's solution is good (to do the processing before plotting), but if you really want ggplot to do that work for you too, you can. [Using df that @gauden provided.]

qplot(pmin(length_bgn, length_end), pmax(length_bgn, length_end), data=df)

enter image description here

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top