在进一步开发早期问题的解决方案时,我遇到了一些意想不到的不一致:
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%)?
我可能错过了一些明显的东西(不是第一次)。此外,与ListLinePlot
或BarChart
一起使用时,此方法似乎不起作用,两者似乎都接受FrameTicks
属性。
答案 0 :(得分:7)
DateListPlot
默认为Frame->True
。 ListPlot
默认为Frame->False
。它显示的是Ticks,而不是FrameTicks。
尝试将Frame
设置为true:
DateListPlot[data,
FrameTicks -> {{myFrameTicks, None}, {Automatic, None}}]
ListPlot[data[[All, 2]],
Frame -> True,
FrameTicks -> {{myFrameTicks, None}, {Automatic, None}}]
答案 1 :(得分:2)
我们FrameTicks
为Frame
,Ticks
为Axes
,因此除了David打开ListPlot
框架的解决方案外,您还可以而是指定Ticks
的函数:
ListPlot[data[[All, 2]], Ticks -> {Automatic, myFrameTicks}]
(注意订购的不同。)