Chart.js - Форматирование оси Y

м используюChart.js нарисовать простой линейный график, и мне нужно отформатировать его ось Y, как

123456,05 до 123 456,05 $

Я нене понимаю, как использоватьscaleLabel : ""

Я виделкто-то указывает к "JS Micro-Templating ",

но понятия не имею, как использовать это с нашимиscaleLabel вариант.

Кто-нибудь знает, как отформатировать эту ось Y, и, возможно, приведите мне пример?

 vsync22 сент. 2018 г., 14:24
ОП: Пожалуйста, пересмотрите выбранный ответ

Ответы на вопрос(6)

Chart.js 2.X.X

Я знаю, что этот пост старый. Но если кто-то ищет более гибкое решение, вот оно:

var options = {
        scales: {
            yAxes: [{
                ticks: {
                    beginAtZero: true,
                    callback: function(label, index, labels) {
                        return Intl.NumberFormat().format(label);
                        // 1,350

                        return Intl.NumberFormat('hi', { 
                            style: 'currency', currency: 'INR', minimumFractionDigits: 0, 
                        }).format(label).replace(/^(\D+)/, '$1 ');
                        // ₹ 1,350

                        // return Intl.NumberFormat('hi', {
                            style: 'currency', currency: 'INR', currencyDisplay: 'symbol', minimumFractionDigits: 2 
                        }).format(label).replace(/^(\D+)/, '$1 ');
                        // ₹ 1,350.00
                    }
                }
            }]
        }
    }

Привет' это хинди Проверьте здесь для другихаргумент локали

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation#locales_argument

для большегосимвол валюты

https://www.currency-iso.org/en/home/tables/table-a1.html

Как сказал Nevercom, scaleLable должен содержать javascript, поэтому для манипулирования значением y просто примените требуемое форматирование.

Обратите внимание, что значение является строкой.

var options = {      
    scaleLabel : ""
};

Пример jsFiddle

если вы хотите установить ручной масштаб, вы можете использовать scaleOverride

var options = {      
    scaleLabel : "",

    scaleOverride: true,
    scaleSteps: 10,
    scaleStepWidth: 10,
    scaleStartValue: 0

};

Пример jsFiddle

 MasoodUrRehman13 апр. 2016 г., 16:19
очень ясно, я был смущен, как использовать scaleLabel с пользовательскими значениями Спасибо +1

Недокументированная особенность библиотеки ChartJS заключается в том, что если вы передадите функцию вместо строки, она будет использовать вашу функцию для визуализации оси Y 's scaleLabel.

Так что пока,"" работает, вы также можете сделать:

scaleLabel: function (valuePayload) {
    return Number(valuePayload.value).toFixed(2).replace('.',',') + '

Если ты'Я делаю что-нибудь сложное, яЯ рекомендую сделать это вместо этого.

; }

Если ты'Я делаю что-нибудь сложное, яЯ рекомендую сделать это вместо этого.

 schlingel03 мар. 2015 г., 11:32
Тот'На самом деле лучший ответ здесь. Из-за простого IF функция вызывается напрямую вместо запуска встроенного анализатора шаблонов, который косвенно вызывает код JS.
Решение Вопроса

У меня была такая же проблема, я думаю вChart.js 2.x.x подход немного отличается, как показано ниже.

ticks: {
    callback: function(label, index, labels) {
        return label/1000+'k';
    }
}

Подробнее

var options = {
    scales: {
        yAxes: [
            {
                ticks: {
                    callback: function(label, index, labels) {
                        return label/1000+'k';
                    }
                },
                scaleLabel: {
                    display: true,
                    labelString: '1k = 1000'
                }
            }
        ]
    }
}
 McGrady10 мая 2017 г., 10:46
Тот'сидеть ! ! ! !
 user157697826 окт. 2016 г., 14:26
Это также, кажется, является правильным способом сделать с angular-chart.js
 Jay17 апр. 2017 г., 15:15
Это хорошо работает. Это должно быть принято как ответ. Мне понадобился час, чтобы найти это. Почему этого нет в документации, вне меня. Как ты нашел это, Джейсон?
 Justin14 мар. 2017 г., 07:27
этот ответ должен быть принят. Я думаю, что это будет работать на новых версиях, вероятно, на 2.x.x и выше. У меня есть новая версия, и я попробовал много других решений, найденных в Интернете, но ничего не получалось. это единственное, что сработало для меня ..
 zombie01 сент. 2016 г., 06:49
отлично работал с версией 2.1.6. Благодарю.
 Jaison28 сент. 2016 г., 14:50
Это'Приятно слышать это.
 mikey24208 мая 2017 г., 12:01
Спасибо за этот ответ, мне очень помог с моим проектом.
scaleLabel : ""
 Unbreakable31 авг. 2016 г., 20:26
почему это не работает для меня. Пожалуйста, помогите мне.stackoverflow.com/questions/39256476/...

Вот Вы можете найти хороший пример того, как отформатировать значение оси Y.

Также вы можете использоватьscaleLabel : "" что вы упомянули, это в основном означает, что все между теги будут обрабатываться как код JavaScript (т.е. вы можете использоватьif statments ...)

Ваш ответ на вопрос