2011-12-02 102 views
7

在任何Mathematica圖表或圖表中,如何顯示y軸上的%值?如何在圖的y軸上顯示%值?

我可以具有數據是這樣的:

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] 

只想y軸到範圍從0%至60%,而不是0.0〜0.6。

回答

8

使用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

可以生成FrameTicks表,例如,

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

如果你需要做大量的數字有LevelScheme,一個免費的軟件包,使產生良好的地塊中Mathematica更容易,尤其是涉及刻度時。

編輯:根據Jagra的建議,這裏是一個函數,它根據數據集和所需的刻度步驟生成一個刻度規範列表。假設數據結構總是相同的。

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

現在,您可以定義一個繪圖功能

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

,並使用它像這樣[email protected]

最後,由於您的問題指定任何 Mathematica的情節,要記住,只有FrameTicks作品在陷害地塊,其他地塊使用Ticks -> {{x ticks},{y ticks}}

+1

我嘗試了以下方法來更自動化解決方案,因爲我之前不知道情節範圍。可以進一步簡化它:DateListPlot [Data, FrameTicks - > {{Table [{k/10,ToString @(10 k)<>「%」},{k, IntegerPart [Floor [Min @ data [ [所有,2]],.1] * 10], IntegerPart [Ceiling [Max @ data [ – Jagra

-1

我沒有看到圖形選項,這種可能性,但您可以創建一箇中間函數,將您的號碼轉換爲正確的。您將顯示此功能的圖形。這可以很容易地完成。 祝你好運!

+2

我很抱歉地說,但這個答案除了含糊不清,幾乎沒有信息之外,也是錯誤的。 –

5

假設你y軸值給出比例和你希望他們爲百分比,最簡單的解決方法是:

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

enter image description here

6

您可以用FrameTicks嘗試擺弄:

enter image description here