def plot_world_with_elegans(
        world, radius=None, width=350, height=350, config=None, grid=True,
        wireframe=False, species_list=None, debug=None, max_count=1000,
        camera_position=(-22, 23, 32), camera_rotation=(-0.6, 0.5, 0.6),
        return_id=False, predicator=None):
    config = config or {}
    from IPython.core.display import display, HTML
    from .simulation import load_world
    if isinstance(world, str):
        world = load_world(world)
    species = __parse_world(world, radius, species_list, max_count, predicator)
    color_scale = default_color_scale(config=config)
    plots = []
    for species_info in species:
        plots.append({
            'type': 'Particles',
            'data': species_info['data'],
            'options': {
                'name': species_info['name'],
                'color': color_scale.get_color(species_info['name']),
                'size': species_info['size']
            }
        })
    if debug is not None:
        data = {'type': [], 'x': [], 'y': [], 'z': [], 'options': []}
        for obj in debug:
            for k, v in obj.items():
                data[k].append(v)
        plots.append({
            'type': 'DebugObject',
            'data': data,
            'options': {}
        })
    model = {
        'plots': plots,
        'options': {
            'world_width': width,
            'world_height': height,
            'range': __get_range_of_world(world),
            'autorange': False,
            'grid': grid,
            'save_image': True
        }
    }
    if wireframe:
        model['options']['space_mode'] = 'wireframe'
    model_id = '"viz' + str(uuid.uuid4()) + '"'
    display(HTML(generate_html(
        {'model': json.dumps(model), 'model_id': model_id,
        'px': camera_position[0], 'py': camera_position[1], 'pz': camera_position[2],
        'rx': camera_rotation[0], 'ry': camera_rotation[1], 'rz': camera_rotation[2]},
        'templates/particles.tmpl')))
    if return_id:
        return model_id