热图 Seaborn fmt='d' 错误
Posted
技术标签:
【中文标题】热图 Seaborn fmt=\'d\' 错误【英文标题】:Heat Map Seaborn fmt='d' error热图 Seaborn fmt='d' 错误 【发布时间】:2015-09-14 06:13:54 【问题描述】:延伸到我之前的question
我可以很好地使用 Seaborn 绘制热图,并且可以通过建议获得注释。但我现在看到了一个新问题。
输入文件
Nos,Place,Way,Name,00:00:00,12:00:00
123,London,Air,Apollo,342,972
123,London,Rail,Beta,2352,342
123,Paris,Bus,Beta,545,353
345,Paris,Bus,Rava,652,974
345,Rome,Bus,Rava,2325,56
345,London,Air,Rava,2532,9853
567,Paris,Air,Apollo,545,544
567,Rome,Rail,Apollo,5454,5
876,Japan,Rail,Apollo,644,54
876,Japan,Bus,Beta,45,57
876,Japan,Bus,Beta,40,57
876,Japan,Bus,Beta,40,57
程序:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
sns.set()
df = pd.read_csv('heat_map_data.csv')
df3 = df.copy()
for c in ['Place','Name']:
df3[c] = df3[c].astype('category')
sns.heatmap(df3.pivot_table(index='Place', columns='Name', values='00:00:00' ),annot=True, fmt='.1f' )
plt.show()
-
如果我采用
fmt='d'
,那么我得到浮点值错误并更改为fmt='f'
,我得到所需列的计数。
但是当相同的轴值重复时,它不会添加所需列的计数。请问有什么解决方案吗?
正如在输入文件中看到的那样
876,Japan,Bus,Beta,45,57
876,Japan,Bus,Beta,40,57
876,Japan,Bus,Beta,40,57
它有 3 行重复,它们的值应该显示为 sum
代表Japan
和Beta
的单元格不应将值注释为125
,而是显示41.7
。我该如何做到这一点?也可以给出两个值作为注释吗?
-
第二个疑问是现在在
pivot
我给value='00:00:00'
但我需要它来动态读取文件中的最后一列。
【问题讨论】:
从文件中动态读取最后一列是什么意思? value 是倒数第二列,您确实在中阅读了它 每个时间间隔更新文件并生成新的计数列(之前的数据处理部分),并且在每个时间间隔的数据处理之后绘制新列. 【参考方案1】:您可以使用aggfunc 关键字传入字典:
聚合函数:
函数,默认 numpy.mean,或函数列表 如果传递函数列表,则生成的数据透视表将具有分层列,其顶层是函数名称(从函数对象本身推断)
sns.heatmap(df3.pivot_table(index='Place', columns='Name',
values='00:00:00',aggfunc='00:00:00':np.sum), annot=True, fmt='.1f')
哪些输出:
【讨论】:
@PadraicCunningham 请问我有一个合适的解决方案***.com/questions/31073889/…以上是关于热图 Seaborn fmt='d' 错误的主要内容,如果未能解决你的问题,请参考以下文章