2011-12-02 11 views
7

In qualsiasi grafico o trama Mathematica come è possibile visualizzare i valori% sull'asse y?Come posso visualizzare i valori% sull'asse y di un grafico?

I può avere dati simili:

data = {{{2010, 8, 3}, 0.}, {{2010, 8, 31}, -0.052208}, {{2010, 9, 30}, 
    0.008221}, {{2010, 10, 29}, 0.133203}, {{2010, 11, 30}, 
    0.044557}, {{2010, 12, 31}, 0.164891}, {{2011, 1, 31}, 
    0.055141}, {{2011, 2, 28}, 0.114801}, {{2011, 3, 31}, 
    0.170501}, {{2011, 4, 29}, 0.347566}, {{2011, 5, 31}, 
    0.461358}, {{2011, 6, 30}, 0.244649}, {{2011, 7, 29}, 
    0.41939}, {{2011, 8, 31}, 0.589874}, {{2011, 9, 30}, 
    0.444151}, {{2011, 10, 31}, 0.549095}, {{2011, 11, 30}, 0.539669}}; 

[email protected] 

voglio solo l'asse y al variare da 0% al 60% anziché 0,0 e 0,6.

risposta

8

Utilizzare FrameTicks -> {{left, right},{bottom, up}}

DateListPlot[data, 
      FrameTicks -> {{{{0.0, "0%"}, {0.1, "10%"}, {0.2, "20%"}, 
           {0.3, "30%"}, {0.4, "40%"}, {0.5, "50%"}, 
           {0.6, "60%"}}, None}, 
          {Automatic, None}}] 

enter image description here

La tabella per FrameTicks può essere generato, ad esempio,

Table[{k/10., [email protected](10 k) <> "%"}, {k, 6}] 
(* Out[10] := {{0.1, "10%"}, {0.2, "20%"}, {0.3, "30%"}, {0.4, "40%"}, {0.5, "50%"}, {0.6, "60%"}} *) 

Se avete bisogno di fare un sacco di figure c'è LevelScheme, un pacchetto gratuito che rende la produzione di buone trame in Mathematica è molto più facile, specialmente quando si tratta di segni di graduazione.

MODIFICA: Come da suggerimento di Jagra, ecco una funzione che fa un elenco di specifiche di tick basato sul set di dati e con i gradini di graduazione desiderati. Ipotesi sono che la struttura dei dati è sempre la stessa.

ticks[step_, data_] := {{Table[{k, [email protected]@(100 k) <> "%"}, 
           {k, 
           Floor[[email protected][[All, 2]], step], 
           Ceiling[[email protected][[All, 2]], step], 
           step}], None}, 
         {Automatic, None}}; 

Ora è possibile definire una funzione tracciato

plot = DateListPlot[#, FrameTicks -> ticks[.1, #]] & 

e utilizzarlo come questo [email protected]

Infine, dal momento che la tua domanda specifica qualsiasi Mathematica trama, ricordare che solo FrameTicks lavori sulla incorniciato grafici, per altri grafici utilizzare Ticks -> {{x ticks},{y ticks}}.

+1

Ho provato quanto segue per automatizzare maggiormente la soluzione, dato che non conoscerò la gamma di grafici in anticipo. Uno potrebbe probabilmente semplificarlo ulteriormente: DateListPlot [data, FrameTicks -> {{Table [{k/10., ToString @ (10 k) <> "%"}, {k, IntegerPart [Floor [Min @ data [ [Tutti, 2]], .1] * 10], IntegerPart [Soffitto [Max @ dati [[Tutti, 2]], .1] * 10] }], Nessuno}, {Automatico, Nessuno}}] – Jagra

-1

Non vedo le opzioni grafiche, tale possibilità, ma è possibile creare una funzione intermedia che convertirà il numero a destra. Stai per visualizzare il grafico di questa funzione. Questo può essere fatto facilmente. Buona fortuna!

+2

Mi spiace dirlo ma questa risposta, oltre ad essere vaga e quasi priva di informazioni, è anche sbagliata. –

5

Supponendo che i valori dell'asse y sono dati come rapporti e loro vogliono come percentuali, la soluzione più semplice è:

DateListPlot[{#1, 100 #2} & @@@ data] 

enter image description here

6

Si potrebbe provare a giocherellare con FrameTicks:

enter image description here