Как получить неравномерное значение тика для цветовой полосы в сюжете - PullRequest
0 голосов
/ 22 ноября 2018

В графике, как я могу отобразить этот тип цветовой полосы для контурного графика?Просто пытаюсь выяснить, поддерживает ли контур неравномерное тиковое значение для цветовой полосы контурного графика.

enter image description here

Изображение выше - это то, что яЯ ищу, чтобы попасть в заговор.

tickvals и ticktext не работает, как ожидалось.

1 Ответ

0 голосов
/ 25 ноября 2018

Попробуйте этот 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 потребует только одну \.

...