How to set the number of decimal places in a Ploty Animation slider - Python

I am plotting a Dataframe into a Plotly Express animation. The Slider uses the ‘shot’ number, all of which are whole numbers (no decimal places). When the Slider displays, it has decimal places, how do I remove them? A sample from the dataframe.

shot    Easting Northing    Depth
1001    455951.7    7328194.4   2.5
1002    455301.6    7326908.9   2.5
1003    455327.8    7326897.2   2.5
1004    455880.7    7328069.7   2.5
1005    455875.3    7328058.5   2.5
1006    455869.8    7328047.2   2.5
1007    455864.3    7328036.0   2.5
1008    455858.8    7328024.8   2.5
1009    455853.3    7328013.6   2.5
1010    455847.8    7328002.3   2.6
1011    455842.3    7327991.1   2.6
1012    455836.8    7327979.9   2.6
1013    455831.3    7327968.7   2.6
1014    455825.8    7327957.4   2.6
1015    455820.3    7327946.2   2.6
1016    455814.8    7327935.0   2.6
1017    455809.3    7327923.8   2.6
1018    455803.8    7327912.6   2.6
1019    455798.3    7327901.4   2.6

The code. I have called the data dfAnime

        ## Animated plot
        import plotly.express as px
        fig = px.scatter(dfAnime, x="Easting", y="Northing", animation_frame="shot",
            color='Depth',range_x=[np.min(dfAnime['Easting']),np.max(dfAnime['Easting'])],
            range_y=[np.min(dfAnime['Northing']),np.max(dfAnime['Northing'])])
            
        fig.layout.updatemenus[0].buttons[0].args[1]["frame"]["duration"]=100 # Sets speed. Comment out to turn off play/stop button
        fig.update_yaxes(
            scaleanchor="x",
            scaleratio=1,
            exponentformat='none')
        fig.update_xaxes(
            scaleanchor="x",
            scaleratio=1,
            exponentformat='none')
        fig.update_layout(template="plotly_dark")           
        fig.show()

image

Hi @WillH

The labels should indeed be an integer if the shot column was an integer in the same dataframe.

Could you check the data type of the column using dfAnime.dtypes?

If it is not int64, then you can change the column to int64 using this command dfAnime.shot = dfAnime.shot.astype(int)

I am thinking that the datatype is not int64, maybe object or float64 which might be causing this error.

Hi @sparkmaddy.

That solved it, you were correct, float64.
I assigned the other items in the parent dataframe as float, so I assume everything that wasn’t specifically set defaulted to float, and that then carried over into the child dfAnime when I extracted specific columns.

1 Like