Aumentar e diminuir o raio de um círculo usando transição d3

Eu estou tentando criar um efeito de pulso em um círculo aumentando e diminuindo seu raio. Eu gostaria que o círculo crescesse e diminuísse com base em um determinado conjunto de dados. Eu só posso obter a função de transição para o éter aumentar ou diminuir o raio, mas não ambos.

d3 cria automaticamente um círculo diferente para cada valor na matriz. Como posso fazer com que o raio de um círculo cresça e encolha à medida que se repete no array? uma versão simples do que tenho até agora está abaixo. Obrigado por qualquer ajuda que você possa oferecer.

dataset = [30, 80, 150, 90, 20, 200, 180]

var svg = d3.select("body")
  .append("svg")
  .attr("width", w)
  .attr("height", h);

var circle = svg.selectAll("circle")
  .data(dataset)
  .enter()
  .append("circle");

circle
  .attr("cx", 500)
  .attr("cy", h/2)
  .attr("r", dataset[0])
  .attr("fill", "orange");

questionAnswers(2)

yourAnswerToTheQuestion