如何在绘图的y轴上显示百分比数值?

7
在任何Mathematica图表或绘图中,如何在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}};

DateListPlot@data

我希望y轴的范围从0.0到0.6变为0%到60%。

4个回答

8

使用 FrameTicks -> {{左侧, 右侧},{底部, 顶部}}

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}}]
FrameTicks可以这样生成:

Table[{k/10., ToString@(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
ticks[step_, data_] := {{Table[{k, ToString@IntegerPart@(100 k) <> "%"}, 
                               {k, 
                                Floor[Min@data[[All, 2]], step],
                                Ceiling[Max@data[[All, 2]], step], 
                                step}], None}, 
                         {Automatic, None}}; 


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

并且像这样使用它:plot@data

最后,请记住,由于您的问题指定了任何Mathematica绘图,在其他绘图中使用Ticks -> {{x ticks},{y ticks}},而FrameTicks仅适用于带框架的绘图。

如果您需要制作许多图形,则可以使用免费软件包,它可以使在Mathematica中生成良好的绘图更加容易,特别是涉及刻度标记时。编辑:根据Jagra的建议,这里提供了一个基于数据集并具有所需刻度步骤的刻度规范列表函数。假设数据结构始终相同。现在您可以定义一个绘图函数。

1
我尝试了以下方法来更自动化解决方案,因为我事先不知道图表范围。可能还可以进一步简化:DateListPlot[data,FrameTicks-> {{Table[{k/10.,ToString @(10 k)<>%"}, {k,IntegerPart[Floor[Min@data[[All,2]],.1]*10],IntegerPart[Ceiling[Max@data[[All,2]],.1]*10]}],无},{自动,无}}] - Jagra

6
您可以尝试调整FrameTicks来实现:

enter image description here


5
假设您的 y 轴值以比率形式给出,您希望将它们转换为百分比,最简单的解决方案是:
DateListPlot[{#1, 100 #2} & @@@ data]

enter image description here


-1

我没有看到图形选项,但是你可以创建一个中间函数来将你的数字转换为正确的格式。然后你可以展示这个函数的图形。这很容易实现。 祝你好运!


2
很抱歉要说,除了含糊且几乎没有信息外,这个答案也是完全错误的。 - Sjoerd C. de Vries

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接