pandas - 从 DataFrame 图中制作 seaborn 热图以了解数据范围
问题描述
如何制作 seaborn 热图(从 pandas DataFrame 图创建)以了解数据范围?即,当我将鼠标指针悬停在绘图上时,我可以在绘图窗口的右下角看到"x= y=",而我想查看悬停在绘图上的点的坐标(例如,"x=25.6, y=3.3" ),当然,假设输入 DataFrame 包含一个 2D 直方图,每个轴上的 bin 大小相等。
或者,也许我可以用不同的方式创建这样的情节来达到同样的效果?例如,ax.hist2d
我将它开箱即用,但我希望能够使用每个 bin 的自定义代码内容进行计算,并使其有效地成为热图(使用 bin 内容的颜色编码)。
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
Index = [ 1.0, 2.0, 3.0, 4.0, 5.0]
Cols = [10.0, 20.0, 30.0, 40.0, 50.0]
df = pd.DataFrame(abs(np.random.randn(5, 5)),
index=Index, columns=Cols)
plt.close(1)
fig,ax = plt.subplots(num=1)
sns.heatmap(df, annot=True)
plt.show(block=False)
谢谢您的帮助!
解决方案
如果你替换sns.heatmap(...)
为ax.imshow(..)
,你就接近你需要的了。然后,您可以将图像的范围设置为您需要的数据范围。
import numpy as np; np.random.seed(42)
import pandas as pd
import matplotlib.pyplot as plt
Index = [ 1.0, 2.0, 3.0, 4.0, 5.0]
Cols = [10.0, 20.0, 30.0, 40.0, 50.0]
df = pd.DataFrame(abs(np.random.randn(5, 5)),
index=Index, columns=Cols)
plt.close(1)
fig,ax = plt.subplots(num=1)
dx = np.diff(df.columns)[0]/2
dy = np.diff(df.index)[0]/2
extent = [df.columns.min()-dx, df.columns.max()+dx,
df.index.min()-dy, df.index.max()+dy]
ax.imshow(df, extent=extent, aspect="auto")
plt.show()
推荐阅读
- swift - 如何在一个函数中同时运行两个 enumerateNodes
- javascript - Xamarin WebView Audio.Play 不是函数
- pine-script - PineScript:如何只获得前一天的 OHLC 而不是前一天的 OHLC 系列?
- css - 如何在引导网格中将 *ngFor 生成的内容居中?
- onclick - MarkitUp Onclick 事件
- php - 尝试访问 int 类型值的数组偏移量 { DefaultValueBinder.php 第 82 行}
- node.js - Socket.io 如何离开房间
- c++ - 错误:对成员“show”的请求在 Qt 中不明确
- java - Couchbase SDK 3.0 从 java 启用/禁用刷新选项
- c - 在c中用两行声明并初始化一个指向函数的指针数组