【问题标题】:How can I show % values on the y axis of a plot?如何在绘图的 y 轴上显示 % 值?
【发布时间】:2011-12-02 16:19:56
【问题描述】:

在任何 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% 到 60%,而不是 0.0 到 0.6。

【问题讨论】:

    标签: wolfram-mathematica plot mathematica-8


    【解决方案1】:

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

    可以生成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,这是一个免费软件包,可以更轻松地在 Mathematica 中制作精美的绘图,尤其是在涉及刻度线时。

    编辑:根据 Jagra 的建议,这里有一个函数,它根据数据集和所需的刻度步长制作刻度规范列表。假设数据结构始终相同。

    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 图,请记住FrameTicks 仅适用于框架图,其他图使用Ticks -&gt; {{x ticks},{y ticks}}

    【讨论】:

    • 我尝试了以下方法来使解决方案更加自动化,因为我事先不知道绘图范围。可以进一步简化它: 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] }], None}, {Automatic, None}}]
    【解决方案2】:

    你可以尝试摆弄FrameTicks:

    【讨论】:

      【解决方案3】:

      假设您的 y 轴值以比率形式给出并且您希望它们以百分比形式给出,最简单的解决方案是:

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

      【讨论】:

        【解决方案4】:

        我看不到图形选项,这种可能性,但您可以创建一个中间函数,将您的数字转换为右侧。您将显示此函数的图形。这很容易做到。 祝你好运!

        【讨论】:

        • 很抱歉,这个答案除了含糊不清和几乎没有信息外,也是大错特错。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-20
        • 2016-03-13
        • 2014-12-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多