我正在绘制泰坦尼克号数据集的相关矩阵。
df_corr = df.corr()
最初,矩阵看起来像这样:
fig = ff.create_annotated_heatmap(
z=df_corr.to_numpy(),
x=df_corr.columns.tolist(),
y=df_corr.index.tolist(),
zmax=1, zmin=-1,
showscale=True,
hoverongaps=True
)
# add title
fig.update_layout(title_text='<i><b>Correlation not round</b></i>')
我想对浮点数进行四舍五入,这样它们在.
点之后显示的数字就少了。
当前的解决方法实际上是在输入之前绕过pandas Dataframe 。
df_corr_round = df_corr.round(3)
fig = ff.create_annotated_heatmap(
z=df_corr_round.to_numpy(),
x=df_corr.columns.tolist(),
y=df_corr.index.tolist(),
zmax=1, zmin=-1,
showscale=True,
hoverongaps=True
)
# add title
fig.update_layout(title_text='<i><b>Correlation round</b></i>')
但是当我将鼠标悬停在文本上时,变通方法也会使文本圆整。我想在充分的细节悬停文本,而显示文本是圆的。
我可以在不改变输入数据框的情况下在每个单元格上显示更少的数字吗?
4条答案
按热度按时间vuktfyat1#
我只能假设您正在从一个列表列表中构建
ff.create_annotated_heatmap()
,就像在Annotated Heatmaps in Python下的文档中所做的那样。如果你使用的是pandas数据框,也不用担心。下面的完整代码片段将向您展示如何从pandas Dataframe 构建correlation matrix,其中包含多个股票时间序列px.data.stocks
,然后使用df.values.tolist()
创建列表列表以构建带注解的热图。如果你正在做类似的事情,那么构建注解的一种方法就是定义一个这样的文本:然后,你需要得到你想要的数字个数,就是使用round():
正如你在下面看到的,这种方法(1)不会像
df_corr.round()
那样改变源 Dataframe ,(2)在图中只显示1个数字,(3)在悬停时显示更长的数字格式。在图像中,我悬停在MSFT / FB = 0.5
上完整代码:
6jygbczu2#
我手头没有数据,所以我还没能检查执行情况,但我认为下面的代码可以工作。请参阅official reference。
stszievb3#
您应该添加
".round()"
方法。您可以对 Dataframe 执行相同的操作。下面的代码适用于具有非舍入矩阵值的值,其中包含plotly.express:
The graph with non-rounded values
现在用rounded:
With rounded values
dxpyg8gm4#
使用update_traces设置texttemplate和hovertemplate。还需要声明text_auto=True