惊讶地发现没有人提到更强大、更具交互性和更易于使用的替代方案。
A)你可以使用情节:
只需两行,您就会得到:
互动性,
平滑的刻度,
基于整个数据框而不是单个列的颜色,
轴上的列名和行索引,
放大,
平移,
内置一键式功能将其保存为 PNG 格式,
自动缩放,
悬停比较,
显示值的气泡,因此热图仍然看起来不错,您可以在任何地方看到值:
import plotly.express as px
fig = px.imshow(df.corr())
fig.show()
B)您还可以使用散景:
所有相同的功能都有一点麻烦。但是,如果您不想选择加入 plotly 并且仍然想要所有这些东西,那么仍然值得:
from bokeh.plotting import figure, show, output_notebook
from bokeh.models import ColumnDataSource, LinearColorMapper
from bokeh.transform import transform
output_notebook()
colors = ['#d7191c', '#fdae61', '#ffffbf', '#a6d96a', '#1a9641']
TOOLS = "hover,save,pan,box_zoom,reset,wheel_zoom"
data = df.corr().stack().rename("value").reset_index()
p = figure(x_range=list(df.columns), y_range=list(df.index), tools=TOOLS, toolbar_location='below',
tooltips=[('Row, Column', '@level_0 x @level_1'), ('value', '@value')], height = 500, width = 500)
p.rect(x="level_1", y="level_0", width=1, height=1,
source=data,
fill_color={'field': 'value', 'transform': LinearColorMapper(palette=colors, low=data.value.min(), high=data.value.max())},
line_color=None)
color_bar = ColorBar(color_mapper=LinearColorMapper(palette=colors, low=data.value.min(), high=data.value.max()), major_label_text_font_size="7px",
ticker=BasicTicker(desired_num_ticks=len(colors)),
formatter=PrintfTickFormatter(format="%f"),
label_standoff=6, border_line_color=None, location=(0, 0))
p.add_layout(color_bar, 'right')
show(p)