build visualization component