Graphing the UMAP projections using plotly

Hi,
I would like to have UMAP projections of the whole IRIS dataset (multiple columns) and generate both 2d and 3d plots. The codes below I got from " [t-SNE and UMAP projections | (t-SNE and UMAP projections | Python | Plotly)" can only project one column by UMAP as specified by the “feature” object. How to project multiple columns of the dataset. Your help is greatly appreciated.
Thanks.
Jianhua

from umap import UMAP
import plotly.express as px

df = px.data.iris()

features = df.loc[:, :‘petal_width’]

umap_2d = UMAP(n_components=2, init=‘random’, random_state=0)
umap_3d = UMAP(n_components=3, init=‘random’, random_state=0)

proj_2d = umap_2d.fit_transform(features)
proj_3d = umap_3d.fit_transform(features)

fig_2d = px.scatter(
proj_2d, x=0, y=1,
color=df.species, labels={‘color’: ‘species’}
)
fig_3d = px.scatter_3d(
proj_3d, x=0, y=1, z=2,
color=df.species, labels={‘color’: ‘species’}
)
fig_3d.update_traces(marker_size=5)

fig_2d.show()
fig_3d.show()