3

以前の質問に対する解決策をさらに発展させているときに、いくつかの予期しない矛盾に遭遇しました。

プロットの 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}};

FrameTicks前回の投稿で提供された貢献と洞察に基づいて、パーセンテージを作成する方法を定義しました。

myFrameTicks = 
Table[
  {k/10., ToString@(10 k) <> "%"}, 
  {
    k, 
    IntegerPart[Floor[Min@data[[All, 2]], .1]*10], 
    IntegerPart[Ceiling[Max@data[[All, 2]], .1]*10]
   }
 ];

同じ を使用して、同じデータの 2 つのプロットを見てみましょうFrameTicks

DateListPlot[data, FrameTicks -> {{myFrameTicks, None}, {Automatic, None}}]

Mathematica グラフィックス

ListPlot[data[[All, 2]], FrameTicks -> {{myFrameTicks, None}, {Automatic, None}}]

Mathematica グラフィックス

では、これらのプロットの両方が、最初のプロットのようにフレーム ティックをパーセンテージ (たとえば 60%) で表示しないのはなぜでしょうか?

明らかな何かを見逃した可能性があります(初めてではありません)。ListLinePlotまた、このアプローチは、またはと一緒に使用すると機能しないようです。BarChartどちらもFrameTicks属性を受け入れるようです。

4

2 に答える 2

7

DateListPlotデフォルトはFrame->TrueListPlotデフォルトはFrame->False。FrameTicksではなくTicksを表示しています。

Frameをtrueに設定してみてください。

DateListPlot[data, 
  FrameTicks -> {{myFrameTicks, None}, {Automatic, None}}]

ListPlot[data[[All, 2]], 
  Frame -> True, 
  FrameTicks -> {{myFrameTicks, None}, {Automatic, None}}]
于 2011-12-02T19:45:45.350 に答える
2

FrameTicksforFrameTicksforがAxesあるので、 のフレームをオンにする David のソリューションに加えて、ListPlot代わりに for の関数を指定できますTicks

ListPlot[data[[All, 2]], Ticks -> {Automatic, myFrameTicks}]

(順序の違いに注意してください。)

于 2011-12-02T19:52:05.317 に答える