Seaborn 热图显示不正确的 x 轴值
Posted
技术标签:
【中文标题】Seaborn 热图显示不正确的 x 轴值【英文标题】:Seaborn heatmap showing incorrect x-axis values 【发布时间】:2018-03-24 13:40:36 【问题描述】:我有一个看起来像这样的 Pandas 数据框(“df
”):
Variable1 Var2 Parameters Values
0 10.000 1.1 0.296342 0.170009
1 10.015 1.1 0.297013 0.168656
2 10.030 1.1 0.297659 0.167326
3 10.045 1.1 0.298282 0.166018
4 10.060 1.1 0.298883 0.164731
5 10.075 1.1 0.299462 0.162223
... ... ... ... ...
4038 24.565 1.0 0.563698 0.222069
使用以下命令旋转数据框,
# Pivot dataframe
df = df.pivot('Var2', 'Variable1', 'Values')
我得到以下旋转数据框:
Variable1 10.000 10.015 10.030 10.045 10.060 10.075 \
Var2
1.0 0.219987 0.218130 0.216290 0.214465 0.212654 0.210856
1.1 0.170009 0.168656 0.167326 0.166018 0.164731 0.163467
1.2 0.133185 0.132202 0.131230 0.130269 0.129318 0.128378
1.3 0.104472 0.103893 0.103312 0.102729 0.102147 0.101564
Variable1 ... 24.865 24.880 24.895 24.910 24.925
Var2 ...
1.0 ... 0.212118 0.211691 0.211272 0.210860 0.210456
1.1 ... 0.174883 0.174566 0.174257 0.173956 0.173662
1.2 ... 0.147406 0.147154 0.146907 0.146664 0.146425
1.3 ... 0.126780 0.126616 0.126456 0.126301 0.126150
但是,当我尝试使用 Seaborn 的 heatmap
使用以下命令对此进行成像时:
# Pivot dataframe
df = df.pivot('Var2', 'Variable1', 'Values')
# Create heatmap
f, ax = plt.subplots(figsize=(20, 10))
sns.heatmap(df)
ax.xaxis.set_major_locator(ticker.MultipleLocator(20))
ax.xaxis.set_major_formatter(ticker.ScalarFormatter())
plt.show()
我得到一个显示变量 1 的索引 (0,1,2,3,4,...) 的图,而我需要它来显示变量 1 的 值 (10, 10.015 、10.030、10.045 等)。我已经包含了一个示例来说明。
我错过了什么?
【问题讨论】:
您能否包含部分旋转的df
?
@akilat90 -- 很抱歉,我跑题了。我纠正了我的问题。我之前拥有的是旋转数据框。我已经包含了原始数据框的示例。
我在您提供的样本数据上遵循了与您相同的步骤,并且能够使用 seaborn 0.7.1 获得热图
@akilat90 - 您的 x 轴读取了 Variable1 的正确值?如果有什么不同,我会在 Jupyter Notebook 中运行它。
是的,看我的回答
【参考方案1】:
复制您的样本数据,
Variable1 Var2 Parameters Values
0 10.000 1.1 0.296342 0.170009
1 10.015 1.1 0.297013 0.168656
2 10.030 1.1 0.297659 0.167326
3 10.045 1.1 0.298282 0.166018
4 10.060 1.1 0.298883 0.164731
5 10.075 1.1 0.299462 0.162223
4038 24.565 1.0 0.563698 0.222069
df = pd.read_clipboard()
df = df.pivot('Var2', 'Variable1', 'Values')
df
的样子:
Variable1 10.000 10.015 10.030 10.045 10.060 10.075 \
Var2
1.0 NaN NaN NaN NaN NaN NaN
1.1 0.170009 0.168656 0.167326 0.166018 0.164731 0.162223
Variable1 24.565
Var2
1.0 0.222069
1.1 NaN
只使用sns.heatmap(df)
返回,
【讨论】:
我不确定发生了什么,但只需运行sns.heatmap(df)
(如您所建议的那样)即可解决问题。感谢您的帮助——直到关于pd.read_clipboard()
。
最后一件事——如何为我的 x 轴定义我的(开始、结束、增量)?
一种方法是使用ax = sns.heatmap(df)
并将一个numpy数组传递给ax.xaxis.set_ticklabels()
以上是关于Seaborn 热图显示不正确的 x 轴值的主要内容,如果未能解决你的问题,请参考以下文章