如何在 Plotly Animation 滑块中设置小数位数 - Python
How to set the number of decimal places in a Ploty Animation slider - Python
我正在将 Dataframe 绘制到 Plotly Express 动画中。 Slider使用的是'shot'号,都是整数(没有小数位)。当 Slider 显示时,它有小数位,如何删除它们?
来自数据框的样本。
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
代码。我把数据称为 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()
答案是数据类型,它应该是 Int 而不是 float(从父数据帧继承而来)。
以下内容来自 Plotly 社区论坛上发布的同一问题。
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.
我正在将 Dataframe 绘制到 Plotly Express 动画中。 Slider使用的是'shot'号,都是整数(没有小数位)。当 Slider 显示时,它有小数位,如何删除它们? 来自数据框的样本。
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
代码。我把数据称为 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()
答案是数据类型,它应该是 Int 而不是 float(从父数据帧继承而来)。
以下内容来自 Plotly 社区论坛上发布的同一问题。
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 toint64
using this commanddfAnime.shot = dfAnime.shot.astype(int)
I am thinking that the datatype is not
int64
, maybeobject
orfloat64
which might be causing this error.