问题描述
我正在构建一个应用程序,该应用程序以各种可视形式显示股票相关性数据,包括应用了热图的矩阵。我的热图是通过将相关矩阵数据帧传递到IPy Widgets Output来创建的,因此以后可以将其显示为VBox的一部分。我已经成功应用了背景渐变并将数字格式化为2dp。谁能帮我编辑该功能以减小字体大小,我只想将其缩小一点?
注意:我选择使用matplotlib上的数据框样式来执行此操作,因为我遇到很多问题,无法以所需的方式显示输出。我也有一个功能,可以下载数据框以使用所应用的样式来表现出色。
我尝试将以下代码行放在笔记本的开头,以便可以将其保留在函数之外,但是一旦将数据帧传递到Output,它似乎就会被忽略。
pd.options.display.float_format = "{:,.2f}".format
这是我的代码示例:
import seaborn as sns
import ipywidgets as ipw
import pandas as pd
import numpy as np
#Sample Data
data = np.random.randint(5,30,size=500)
df = pd.DataFrame(data.reshape((50,10)))
corr = df.corr()
#Function produces dataframe as Output
def output_heatmap_df(df):
out = ipw.Output()
with out:
display(df.style\
.background_gradient(cmap=sns.diverging_palette(220,10,as_cmap=True),axis=None).format("{:,.2f}"))
out.layout.width='1600px'
return out
output_heatmap_df(corr)
解决方法
万一有人遇到这个问题,下面的代码最终对我有用:
def output_heatmap_df(df):
out = ipw.Output()
with out:
display(df.style\
.background_gradient(cmap=sns.diverging_palette(220,10,as_cmap=True),axis=None).format("{:,.2f}")
.set_properties(**{'text-align':'center','font-size':'10px'})
.set_table_styles([{'selector':'th','props':[('text-align','center'),('font-size','10px')]}])
)
out.layout.width='1600px'
return out