在为先前的问题进一步开发解决方案时,我遇到了一些意想不到的不一致之处:

How can I show % values on the y axis of a plot?

这似乎足够不同,值得推荐一个新职位。

从相同的数据开始:

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


现在,使用相同的FrameTicks查看相同数据的两个图:

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




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




那么,为什么这两个图都不像第一个图那样以百分比(例如60%)的形式显示帧刻度?

我可能错过了一些显而易见的东西(不是第一次)。另外,当与ListLinePlotBarChart一起使用时,这种方法似乎不起作用,这两个方法似乎都接受FrameTicks属性。

最佳答案

DateListPlot默认为Frame->TrueListPlot默认为Frame->False。它显示的是Ticks,而不是FrameTicks。

尝试将Frame设置为true:

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

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

08-18 12:15