format der y-Achse ticks/Werte in jqplot
Fand ich den folgenden thread sehr nützlich
http://groups.google.com/group/jqplot-users/browse_thread/thread/1986...
Ich würde gerne alle y-Achse Werte oder Zecken in ein array...Meine
Absicht ist es, die Anzahl der Ziffern in jedem der Zecken und
finden Sie die häufigste Anzahl von Ziffern.
Basierend auf dieser Planung im abschneiden Anzahl der Nachkommastellen der y-Achse
Zecken/Werte.
Zum Beispiel : wenn die meisten Zecken haben 6 stellen, 3 stellen abschneiden
und fügen Sie das Wort (in Tausend) auf die Achse label.
Wie kann ich das erreichen? In der unter-Funktion ich kann die Zecken ein
durch ein...aber ich brauche, um Ihnen im Voraus, so dass ich entscheiden kann, von
welchen Faktor zu kürzen, die Anzahl.Bitte ignorieren Sie die Funktion numberwithCommas.Seine nur ein Beispiel.
(function($) {
$.jqplot.tickNumberFormatter = function (format, val) {
if (typeof val == 'number') {
if (!format) {
format = '%.1f';
}
return numberWithCommas($.jqplot.sprintf(format, val));
}
else {
return String(val);
}
};
function numberWithCommas(x) {
return x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",");
}
@Boro : Danke für die Antwort. Könnten Sie bitte lassen Sie mich wissen, was diese Zeile genau?
var ticks = $('.jqplot-' + axisName + '-tick');
Der gleichen Zeile funktioniert nicht in meinem code. Wie kann ich es nutzen?
Kann ich es verwenden, um schieben Sie alle Zecken in ein array, bevor das Steuerelement wird in das Formatierungsprogramm? In anderen Worten, kann ich die ganzen Zecken, bevor das Steuerelement wird in der folgenden Funktion?
$.jqplot.tickNumberFormatter = function (format, val) {
Dem folgenden code funktioniert hervorragend in deinem Beispiel. Warum geht es nicht bei mir 🙁
var axisName = 'yaxis';
var count = 0;
var ticks = $('.jqplot-' + axisName + '-tick');
for (count = 0; count <= ticks.length; count++)
{
console.log($(ticks[count]).text());
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zuerst dachte ich, es wäre so einfach wie die Werte aus dem plot selbst mit einem ähnlichen Ansatz wie hier. So, ich habe eine Stichprobe, die beim klicken auf einen Balken Schleifen um die gewählte Achse Zecken. Das problem mit diesem ist, dass wir eine "private" variable
_ticks
alsticks
man ein leeres array ist (denn es muss explizit gesetzt werden). Dieser Ansatz würde nicht funktionieren, zum Beispiel, mit x-Achse, wo wir dieticks
variable.Daher erhalten alle Zecken, unabhängig von Ihnen gesetzt wird, indem Sie oder nicht, würde ich
jQuery
und greifen Sie, Wann immer Sie Sie brauchen, wie in diesem code. Obwohl, darüber nachzudenken, wenn das Formatierungsprogramm wirkt, bevor die Handlung beendet ist, wird der HTML-Elemente können nicht es noch Sie zu nehmen, aber Sie können es selbst testen. Wenn dieser Ansatz nicht funktioniert, kann man immer anpassen, den ersten Ansatz, anders zu handeln, je nach den ticks festgelegt wird oder nicht.BEARBEITEN in Reaktion auf die OP ' s EDIT:
Könnten Sie bitte lassen Sie mich wissen, was diese Zeile genau?
Hier verwende ich
jQuery
zu erfassen Zecken für die Achse angegeben, die durch seinen Namen (axisName
). Für diese, bevor ich es verwenden, ich geben Sie dievar axisName = 'yaxis';
variable. Sie könnte ersetzen Sie es mit:var ticks = $('.jqplot-yaxis-tick');
Wie es geht, um den rest Ihrer Fragen es könnte der Fall sein, dass ich erwähne gegen Ende meiner ersten Antwort, d.h.
if the formatter acts before the plot is finished the HTML elements might not be there yet to grab them
.EDIT2:
Schauen Sie sich diese Probe. Packt die Zecken innerhalb der formatter, als könnte man Sie beobachten, da Sie manchmal gleich null sind, wahrscheinlich, weil der formatter aufgerufen wird, bevor die Zecken HTML-Elemente erstellt werden. Deshalb, so wenden Sie Ihren Algorithmus, wenn es einige Zecken ansonsten gelten die Standard-Formatierung, zu sehen, ob dieser Ansatz funktionieren wird.
Es möglicherweise noch nicht arbeiten, da wir nicht wissen, was passiert ist, zum Beispiel, warum in der Konsole haben wir die
ticksNoZeroCounter
variable gleich 20 ist eine Anzahl, die der formatter genannt wurde undticks.size() !== 0
. Warum wird die variable nicht gleich 21 oder eine andere Zahl teilbar durch 7, also die Anzahl der ticks)?