2011-12-02 14 views
7

Na dowolnym wykresie lub wykresie Mathematica, w jaki sposób mogę wyświetlić% wartości na osi Y?Jak mogę wyświetlić% wartości na osi Y wykresu?

mogę mieć danych tak:

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] 

ja po prostu oś y w zakresie od 0% do 60%, a nie od 0,0 do 0,6.

Odpowiedz

8

Użyj 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

tabela dla FrameTicks mogą być generowane np

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%"}} *) 

Jeśli trzeba wykonać wiele figur jest LevelScheme, darmowy pakiet, który umożliwia produkcję dobrych działek w Mathematica jest o wiele łatwiejsza, szczególnie jeśli chodzi o znaczniki.

EDYCJA: Zgodnie z sugestią Jagry tutaj jest funkcja, która tworzy listę specyfikacji kleszczy na podstawie zestawu danych i wymaganych kroków kleszcza. Założenia są takie, że struktura danych jest zawsze taka sama.

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}}; 

Teraz można zdefiniować funkcję kreślenia

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

i używać go jak ten [email protected]

Wreszcie, ponieważ Twoje pytanie określa żadnego Mathematica działkę, należy pamiętać, że tylko FrameTicks prace na ramie działki, dla innych działek użyj Ticks -> {{x ticks},{y ticks}}.

+1

Próbowałem następujących sposobów, aby bardziej zautomatyzować rozwiązanie, biorąc pod uwagę, że nie będę znać zakresu działek przed ręką. Prawdopodobnie można go jeszcze uprościć: DateListPlot [data, FrameTicks -> {{Tabela [{k/10., ToString @ (10 k) <> "%"}, {k, IntegerPart [Piętro [Min @ data [ [Wszystko, 2]], .1] * 10], IntegerPart [Sufit [Max @ data [[Wszystkie, 2]], .1] * 10] }], Brak}, {Automatycznie, Brak}}] – Jagra

-1

Nie widzę opcji graficznych, takiej możliwości, ale można utworzyć funkcję pośrednią, która spowoduje konwersję liczby w prawo. Wyświetli się wykres tej funkcji. Można to łatwo zrobić. Powodzenia!

+2

Przykro mi to mówić, ale ta odpowiedź, oprócz bycia niejasnym i prawie pozbawionym informacji, także jest martwa. –

5

Zakładając swoje wartości na osi Y podano jako wskaźników i chcesz je w procentach, najprostszym rozwiązaniem jest:

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

enter image description here

6

Można spróbować błahy z FrameTicks:

enter image description here

Powiązane problemy