7
votes

Forcer la notation scientifique dans les labels de tiques de ListLogLogPlot

J'essaie d'étiquettes de coques sur mesure sur une liste ListeLogLogPlot. En recherchant des archives mathgroup, on dirait que la façon habituelle de gâcher avec les étiquettes de tiques est de les extraire à l'aide de AbsoluteOptions code>, exécutez une règle de remplacement avec le format personnalisé, puis de les nourrir explicitement à la fonction de traçage avec le ticks -> {...} code> option. Cependant, ce qui suit ne fonctionne pas pour LISCHOGLOGPLOT:

foo = ListLogLogPlot[Range[20]^3, Frame -> True];
ticks=(FrameTicks /. AbsoluteOptions[foo, FrameTicks])


5 Réponses :


4
votes

ressemble à un bug pour moi. Calling simple absoluteoptions [FOO] donne des messages d'erreur. OLDES uni [FOO] fonctionne bien, cependant.


0 commentaires

7
votes

11 commentaires

Très élégant! +1. Mais il faut utiliser cela avec précaution car cette astuce repose sur le comportement dépendant de la version de listlogLogPlot .


Je pense que ce code peut être fait beaucoup plus général et moins dépendante de la version juste en remplaçant {a_? Numericq, b_integer} par {a_? Numericq, b_integer, s ___} et {A, Superscript [10, log10 @ b]} par {A, Superscript [10, log10 @ b], S} .


@Alexey, veuillez éditer ma réponse avec cela, votre nom apparaît également sur la réponse. Essayez de garder le formatage, s'il vous plaît.


J'ai fait la modification mais je n'ai pas assez de privilèges et que le changement doit être examiné. Je ne sais pas qui devrait l'examiner quand il sera fait.


@Alexey, je comprends. N'essayez pas de faire une deuxième modification, car cela semble causer à la fois être rejeté. Si vous actualisez cette page et que vous voyez la bannière «Cette édition n'est que visible pour vous» n'est plus là, une personne a rejeté votre édition. Si cela se produit, faites le moi savoir et je vais faire le changement moi-même, mais je préfère que vous obteniez un crédit pour votre propre édition!


Maintenant, la bannière "Cette édition n'est visible que" ne plus là. Je suis surpris!


@Alexey Malheureusement, l'Edit-Reviewer ne savait pas ce que nous voulions. Je vais faire l'édition moi-même. La seule solution est pour moi de vérifier vos questions pour atteindre 2000 représentant bientôt. :-)


@Wizard: Les réponses susceptibles de l'obtiennent là-bas plus vite :)


@yoda, vrai, mais il est plus cher que d'un répondeur, et ce n'est pas une mauvaise chose, ce sont des questions difficiles!


@ M.Wizard, je pense que vous auriez pu approuver la modification en sélectionnant le lien d'édition. Je ne l'ai rencontré qu'une seule fois, alors je ne me souviens pas quand il se produisait. Et, puisque vous avez un représentant plus élevé que moi, vous devriez avoir les mêmes privilèges. (BTW, aime le nom.)


@RCollyer Je vais chercher cela à l'avenir. (Merci. Don Herbert était super.)



0
votes

Envoyer un email avec ce code dans celui-ci pour supporter@wolfram.com. Ils pourront vous dire s'il y a une meilleure solution de contournement connue.


0 commentaires

5
votes

Comme Sjoerd, je préfère généralement écrire une fonction qui calcule les tiques de la volée:

PowerTicks[label_][min_, max_] := Block[{min10, max10},
  min10 = Floor[Log10[min]];
  max10 = Ceiling[Log10[max]];
  Join[Table[{10^i, 
     If[label, Superscript[10, i], Spacer[{0, 0}]]}, {i, min10, 
     max10}],
   Flatten[
    Table[{k 10^i, 
      Spacer[{0, 0}], {0.005, 0.`}, {Thickness[0.001`]}}, {i, min10, 
      max10}, {k, 9}], 1]]
  ]

ListLogLogPlot[Range[20]^3, Frame -> True, 
 FrameTicks -> {{PowerTicks[True], 
    PowerTicks[False]}, {PowerTicks[True], PowerTicks[False]}}]


0 commentaires

5
votes

Pour compléter Brett's Réponse , Regardez le package CustomTicks dans Niveauxcheme . Il fournit deux fonctions pour générer des marques de ticks 'Linticks et LOGTICKS`, et chacune dispose d'une multitude d'options de formatage. Actuellement, cela vous oblige à effectuer le logarithme vous-même, c'est-à-dire xxx

donne

 LOGPLOT DE COSH et SINH sur 0 à 4

Pour une liste de données, vous devez évidemment utiliser log [base, données] avec ListPlot , mais il est fonctionnel. J'ai soumis un correctif à Mark Caprio afin que ce qui suivit ferait exactement la même chose que ci-dessus xxx

si le patch est accepté l'ancienne forme de Logticks serait accessible en définissant l'option tracétype à linéaire , logarithmic est par défaut. L'avantage de l'utilisation CustomTicks est que d'autres bases sont faciles

CODE pour et tracé d'exp supp [-x ^ 2] de 0 à 3

et il le formate automatiquement comme vous le souhaitez.

EDIT : i "D Aimez aussi souligner que CustomTicks est chargé de lui-même, séparé du reste de Niveauxcheme . Et, comme il s'agit d'un petit paquet, il n'ya pas tout au long de la tête supplémentaire.


3 commentaires

@Simon, pour le moment, le seul problème est que vous devez exécuter vous-même les logarithmes. Mais, avec chance, ce ne sera pas comme ça depuis longtemps.


J'ai résisté à l'apprentissage Niveauxcheme pendant des années. La bonne expérience d'aujourd'hui avec CustomTicks pourrait enfin changer cela. Merci.


@Argentosapiens, NiveauxCheme Prend habituellement, mais CustomTicks est un utilitaire génial.