Ваш код выглядит нормально для меня, за исключением того, что, возможно, ваши точки x и y расположены на
for(int i = 0; i < data.size(); i++) {
g.drawOval(data.get(i).getX() - width/2, data.get(i).getY() - height/2,
width, height);
}
, так что овалы центрированы.
Кроме того, вы можете рассмотреть возможность преобразованияданные, такие, что нанесенные точки остаются в границах области и диапазона вашего графика.В противном случае у вас могут быть овалы за пределами вашего прямоугольника.
Возможно, вы захотите проверить JFreeChart для графических библиотек.