2014-05-07 13 views
5

Sono nuovo di R e sto cercando di capire, come scrivere qualcosa come "Ciao ragazzi, questa è la mia trama per (\ n) 8 < = (meno di o uguale) x < = 10 "nel titolo della trama.Come usare più di una espressione in una riga

Ho provato qualcosa di simile:

plot(1:10, main="Hey, guys, this is my plot for \n") 
mtext(c(expression(8 <= x),expression(x <= 10), side=3) 

Questo non dà esattamente quello che voglio, ma "8 (minore o uguale) xx (minore o uguale) 10", e quelle due espressioni sono stampati in una linea sotto il titolo principale, (che è piuttosto fresco), ma nello stesso luogo, che è praticamente inutile :)

ho anche provato:

plot(1:10, main=bquote(paste(8 <= x, x <= 10, sep=","))) 

che tipo di fa quello che voglio (tranne la Seper ator sembra essere completamente ignorato), ma non posso aggiungere altro testo. Uscita: "8 (minore o uguale) xx (minore o uguale) 10".

e quando ho provato

plot(1:10, main=paste("x",bquote(paste(x <= 8,z <= 10,sep=" ")),sep=" ")) 

l'uscita mi irritava completamente: il titolo era: "xpaste (\ n) xx < = 8 (\ n) XZ < = 10 (\ n) x" (il (\ n) è un'interruzione di riga, gli altri caratteri sono esattamente ciò che viene stampato)

Quindi esiste la possibilità di stampare espressioni con più di un operatore?

risposta

3

Le espressioni sono un po 'goffo, ma qui è come si può fare che

plot(1:10, main="Hey, guys, this is my plot for \n") 
mtext(expression(paste(8 <= x,", ",x <= 10)), side=3) 

Per ottenere un vettore di espressioni, è sufficiente utilizzare expression(exp1,exp2,exp3). Non c'è bisogno di preoccuparsi di c() o list(). E poi mescolare le espressioni con il testo, paste() spesso è utile. Senza paste per combinarli come un'unica espressione, verranno tracciati uno sopra l'altro nella stessa posizione.

+0

In aggiunta alla risposta di MrFlick, se solo una x era ricercata, ecco come ho preso la domanda: 'trama (1:10, main =" Hey, ragazzi, questa è la mia trama per \ n ") mtext (espressione (incolla (8 <= x, "" <= 10)), lato = 3) ' – Csislander

4
heyTitle <- bquote(atop(
    "Hey, guys, this is my plot for", 
    {8 <=x}*phantom()<=10 
    )) 

plot(1:10, main=heyTitle) 

Grazie alla this answer per la atop() trucco.

EDIT: Ecco la figura

EDIT 2: prestito da another answer by G. Grothendieck utilizzare le staffe per fissare la spaziatura.

enter image description here

+0

+1 per' atop'. –

+0

+1 per avermi presentato in cima allo –

+0

. Vi ringrazio entrambi. Ora ho solo bisogno di decidere quale soluzione userò. – Nzuri

4

Prova questo:

plot(1:10, main = ~ bold(atop("Hey, guys, this is my plot for", {"8" <= x} <= "10"))) 

Sul dispositivo windows() sembra che questo: screenshot

rivisto spaziatura e ha fatto 2 ° linea un po 'più grande per abbinare prima linea. Aggiunta l'idea di Rbatt atop. Ulteriore semplificazione

+0

Uso piacevole di {} per gestire la spaziatura. Userò qui la tua tecnica per aggiornare la mia risposta - spero non ti dispiaccia (ho già usato '8 <= ~ x ~ phantom() <= 10', ora uso' {8 <= x} * phantom() <= 10' – rbatt

+1

OK. Scambierò un {} per un 'atop'. –

Problemi correlati