Quanto è utile/interessante questa discussione:
Autore |
Discussione |
|
Dimo
Nuovo Arrivato
25 Messaggi |
Inserito il - 22 maggio 2012 : 15:09:51
|
ciao c'è per caso un modo per inserire didascalie nei grafici con R e magari colorare determinate aree del grafico? se non con R c'è qualche programma che mi consigliereste per farlo? grazie
|
|
|
chick80
Moderatore
Città: Edinburgh
11491 Messaggi |
|
Dimo
Nuovo Arrivato
25 Messaggi |
Inserito il - 23 maggio 2012 : 18:23:28
|
faccio il plot e poi do il comando text text(coordinata.x, coordinata.y,"messaggio da inserire") ma non mi inserisce nulla come mai? |
|
|
chick80
Moderatore
Città: Edinburgh
11491 Messaggi |
|
Dimo
Nuovo Arrivato
25 Messaggi |
Inserito il - 23 maggio 2012 : 19:37:12
|
ah ok il problema era che volevo posizionarla sotto l'asse x e mettevo 0 come coordinata y faccio prima a dirti cosa voglio fare :D
voglio scrivere sotto l'asse x, ciò che è scritto nel primo grafico di questa pagina (media più sigma ecc.: http://www.lorenzoazzalini.it/prob/normale.html
in più c'è un modo per non far apparire i numeri sugli assi? grazie per la disp :) |
|
|
chick80
Moderatore
Città: Edinburgh
11491 Messaggi |
Inserito il - 23 maggio 2012 : 20:03:44
|
Ah OK!
In quel caso fai il plot senza assi e poi aggiungi gli assi a posteriori.
Ad es. per riprodurre il grafico di quella pagina io farei:
# Creiamo una sequenza di valori da -5 a 5 con step 0.01
x <- seq(-5, 5, 0.01)
# Calcoliamo la distribuzione normale con media=0 e sd=1 a quei valori
y <- dnorm(x, 0, 1)
# Plot senza assi
# xaxt/yaxt sta per "x (o y) axis type", n sta per "none"
plot(x, y, t="l", xaxt="n", yaxt="n", xlab="y", ylab="f(y)")
# Creiamo le linee verticali tratteggiate (line type=2) a -1, 0, 1
pos <- c(-1, 0, 1)
segments(pos, -1, pos, dnorm(pos, 0, 1), lty=2)
# Alternativamente potevamo usare abline,
# ma sarebbero arrivate fino in alto
# Ad es. abline(v=c(-1, 0, 1), lty=2)
# Creiamo l'asse x usando axis
# Il primo parametro è l'asse (1 in basso, 2 a sx, 3 in alto, 4 a dx)
# at specifica dove mettere i valori e labels le etichette
# expression ci permette di scrivere (tra le altre cose) lettere greche!
axis(1, at=pos, labels=c(expression(sigma - mu),
expression(mu), expression(sigma + mu)))
Consiglio di leggere (io l'ho addirittura stampato, per convenienza) l'help del comando par (?par). Ci sono moltissimi parametri grafici che ti permettono di fare il grafico esattamente come ti serve.
Inoltre consiglio vivamente l'uso di RStudio come interfaccia per R, è ottimo. |
Sei un nuovo arrivato? Leggi il regolamento del forum e presentati qui
My photo portfolio (now on G+!) |
|
|
Dimo
Nuovo Arrivato
25 Messaggi |
Inserito il - 24 maggio 2012 : 14:00:56
|
grande! grazie mille davvero
ascolta che c'è un modo per aumentare la dimensione delle didascalie tipo m-sigma ecc.? mi serve per altri grafici |
|
|
kORdA
Utente Attivo
Prov.: Milano
Città: Monza
1303 Messaggi |
Inserito il - 24 maggio 2012 : 15:55:21
|
Citazione: Messaggio inserito da chick80
# Creiamo l'asse x usando axis
# Il primo parametro è l'asse (1 in basso, 2 a sx, 3 in alto, 4 a dx)
# at specifica dove mettere i valori e labels le etichette
# expression ci permette di scrivere (tra le altre cose) lettere greche!
axis(1, at=pos, labels=c(expression(sigma - mu),
expression(mu), expression(sigma + mu)))
Mi ricordo una roba macchinosa del genere (e per questo ricorro al piu' povero GnuPlot). Gia' che siamo in topic vorrei chiederti una cosa chick. Un po' di tempo fa mi serviva zoomare un plot su un range di valori ben definito (volevo eliminare tutto il vuoto cosmico che stava a fondo scala per intenderci); inoltre volevo aggiungere i minor tics sugli assi. Ho cercato un po' tra la documentazion di par senza successo, ho gettato la spugna e sono tornato a gnuplot. Hai qualche esempio di codice? Avevo trovato un post a riguardo ma usavano dei package esterni, e mi sembra strano che in R bisogna installare librerie esterne solo per disegnare dei minor tics o_O |
http://www.linkedin.com/in/dariocorrada |
|
|
chick80
Moderatore
Città: Edinburgh
11491 Messaggi |
Inserito il - 25 maggio 2012 : 17:24:45
|
Citazione: ascolta che c'è un modo per aumentare la dimensione delle didascalie tipo m-sigma ecc.? mi serve per altri grafici
Usa il parametro cex.axis
Ad es.
axis(1, at=pos, labels=c(expression(sigma - mu),
expression(mu), expression(sigma + mu)), cex.axis=1.5)
Citazione: Un po' di tempo fa mi serviva zoomare un plot su un range di valori ben definito
Usa i parametri xlim e ylim di plot
Ad es:
plot(x, y, xlim=c(0, 10), ylim=c(150, 180))
Citazione: Inoltre volevo aggiungere i minor tics sugli assi
O usi minor.ticks del pacchetto hMisc, oppure chiami due volte axis...
In generale io esporto il plot in PDF o in svg e poi me lo spapocchio in Inkscape quindi non mi metto troppo ad abbellirlo in R. Oppure probablimente ggplot2 ha delle funzioni apposite (ma non lo amo molto) |
Sei un nuovo arrivato? Leggi il regolamento del forum e presentati qui
My photo portfolio (now on G+!) |
|
|
Dimo
Nuovo Arrivato
25 Messaggi |
Inserito il - 26 maggio 2012 : 13:53:20
|
ok grazie sapresti suggerirmi come funziona il comando polygon o rect tipo per colorare un area tra 0 e 1 di una normale
tipo con rect io faccio rect(0,0,1,dnorm(x,0,1)) ma mi esce una schifezza :D |
|
|
kORdA
Utente Attivo
Prov.: Milano
Città: Monza
1303 Messaggi |
Inserito il - 26 maggio 2012 : 18:37:58
|
Citazione: Inoltre volevo aggiungere i minor tics sugli assi O usi minor.ticks del pacchetto hMisc, oppure chiami due volte axis...
In generale io esporto il plot in PDF o in svg e poi me lo spapocchio in Inkscape quindi non mi metto troppo ad abbellirlo in R. Oppure probablimente ggplot2 ha delle funzioni apposite (ma non lo amo molto)
ok, tengo R come seconda scelta per plottare (anche se Gnuplot e' un po' scarso per disegnare i boxplot) |
http://www.linkedin.com/in/dariocorrada |
|
|
chick80
Moderatore
Città: Edinburgh
11491 Messaggi |
Inserito il - 27 maggio 2012 : 19:00:58
|
Citazione: tipo con rect io faccio rect(0,0,1,dnorm(x,0,1)) ma mi esce una schifezza :D
E sì! Perchè rect fa un rettangolo e tu non vuoi un rettangolo! poly invece dovrebbe funzionare. Ad es.
x.fill <- seq(0, 1, 0.01)
y.fill <- dnorm(x.fill, 0, 1)
# Mettiamo gli estremi a 0 per riempire fino alla base
y.fill[1] <- 0
y.fill[length(y.fill)] <- 0
polygon(x.fill, y.fill, col=rgb(0, 0.2, 1, .5))
ovviamente puoi usare un valore diverso da 0 a seconda dell'effetto voluto |
Sei un nuovo arrivato? Leggi il regolamento del forum e presentati qui
My photo portfolio (now on G+!) |
|
|
Dimo
Nuovo Arrivato
25 Messaggi |
Inserito il - 28 maggio 2012 : 14:06:18
|
grazie ancora ;) |
|
|
|
Discussione |
|
|
|
Quanto è utile/interessante questa discussione:
MolecularLab.it |
© 2003-18 MolecularLab.it |
|
|
|