Как я могу показать значения% на оси Y графика? - PullRequest
7 голосов
/ 02 декабря 2011

На любом графике или графике 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.

Ответы [ 4 ]

8 голосов
/ 02 декабря 2011

Использование 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}}]

enter image description here

Можно создать таблицу для 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 -> {{x ticks},{y ticks}}.

6 голосов
/ 02 декабря 2011

Вы можете попробовать поиграться с FrameTicks:

enter image description here

5 голосов
/ 02 декабря 2011

При условии, что ваши значения по оси Y даны как отношения, а вы хотите, чтобы они были в процентах, самое простое решение:

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

enter image description here

0 голосов
/ 02 декабря 2011

Я не вижу графических опций, такая возможность есть, но вы можете создать промежуточную функцию, которая будет конвертировать ваше число вправо.Вы собираетесь отобразить график этой функции.Это можно сделать легко.Удачи!

...