Попробуйте этот Stackoverflow Вопрос:
Ось графика в виде экспоненциального формата
Прямая текстовая форма: ВСЕ КРЕДИТ ДЛЯ: @ MaximilianPeters
1: Как заставить его работать на участках.Я пытался вызвать java при сборке каждого подзаговора, но тогда все сюжеты вышли без экспоненциального.
Тики 2-го / 3-го / и т. Д.Подплот имеет имена классов, такие как y2tick
/ y3tick
/ etc.Мы могли бы сделать наш селектор d3 менее конкретным, а затем использовать each
, чтобы изменить все тики.
ticks = Plotly.d3.selectAll('g.yaxislayer-above').selectAll('text');
ticks.each(function(d, i)
{
var num = parseInt(d.text).toExponential();
Plotly.d3.select(this).text(num);
})
2: заставить его работать как для оси x, так и для оси y (я попытался, потерпел неудачу и заплакалнемного)
Просто измените оператор selectAll на Plotly.d3.selectAll('g.xaxislayer-above').selectAll('text')
3: не допускать разрушения юниверса, когда ось оказывается не числовой (мое приложениетакже может отображать столбцы с датами, поэтому необходимо проверить, является ли это на самом деле числовым вводом)
Вы можете изменить свои функции fixTicks
, чтобы проверить, является ли введенное значение числовым, например, с помощью typeof
или регулярное выражение.С такими значениями, как 1999, 2000 и т. Д., Это может быть сложно, и вам нужно будет обратиться к нему вручную.
4: Если возможно, выведите как 1.23E + 1, а не 1E + 1
toExponential
принимает один параметр , который представляет собой «количество цифр в обозначении после десятичной точки», т. Е. num.toExponential(3)
поможет вам.
Из комментария: Кажется, я получаю NaN, когда значения на галочках являются отрицательными значениями
Плотно использует знак минус Unicode вместо обычного тире.Вы можете заменить его следующей строкой JavaScript:
var num = parseInt(tick[0].innerHTML.replace(/\\u2013|\\u2014|\\u2212/g, '-'));
Примечание: двойная обратная косая черта \\
требуется в R, чистый JavaScript потребует только одну \
.