2016-05-27 3 views
2

Я построил диаграмму рассеяния, но хочу заменить метки метки. Это не должно повториться. Я использовал вынужденную направленную диаграмму рассеяния, которая требует целого числа для оси x и y, после построения графика я хочу заменить метку оси y. Здесь представлен plunkerJust Change Tick метки

https://plnkr.co/edit/ufnBOwQEoTOrP1mUTKhC?p=preview

Я хочу заменить только имена d.sepalLength к d.name. предупреждение показывает правильное значение, но они не добавляются правильно на оси y. Добавлен код ниже, чтобы заменить метки метки. Пожалуйста, помогите

var yAxis = d3.svg.axis() 
    .scale(y) 
    .orient("left") 
    .tickFormat(d3.extent(data, function(d) { alert(d.name);return d.name; })); 

ответ

3

перебор путь поиска, если значение, которое будет вынесено в клещ существует в массиве, если это так, то замените его с именем

var data =[ 
    {sepalLength: "0", sepalWidth: 3.5, name: "AT"}, 
    {sepalLength: "0", sepalWidth: 3.5, name: "AT"}, 
    {sepalLength: "0", sepalWidth: 3.5, name: "AT"}, 
    {sepalLength: "0", sepalWidth: 3.5, name: "AT"}, 
    {sepalLength: "1", sepalWidth: 3.0, name: "AS"}, 
    {sepalLength: "2", sepalWidth: 2.5, name: "AM"}, 
    {sepalLength: "3", sepalWidth: 2.0, name: "CS"}, 
    {sepalLength: "4", sepalWidth: 1.5, name: "CT"}, 
    {sepalLength: "5", sepalWidth: 1.0, name: "CX"} 
] 

var yAxis = d3.svg.axis() 
    .scale(y) 
    .orient("left") 
    .tickFormat(function(d, i) { 
     var inData = data.filter(function (v) { return +v.sepalLength === d }) 
     return inData.length ? inData[0].name : d 
    }); 

Для более надежной решение, которое вы должны установить фиксированные значения для клещи с scale.tickValues на основе sepalLength

demo

+0

Он работал. Большое спасибо. – user123

+0

У меня есть вопрос здесь (http://stackoverflow.com/q/41385010/1735836), вы можете мне помочь. – Patricia