如何解决如何在python中绘制具有不同大小的矩形的热图
我有一个数据框,如下所示:
import pandas as pd
df = pd.DataFrame({'id':[1,2,3,4],'grade':[98,50,10,100],'c':[1000,29,69,150]})
我想绘制一个带有子矩形的热图,这些子矩形的大小代表'c'列的值,颜色代表'grade'的值
如果太复杂了,我可以选择颜色和等级对,而不是大小和“ c”
我做了一些研究,并发现了一些使用sns.heatmap的示例,但我无法完成这项工作。
解决方法
您不需要热图,您需要treemap。
基于this link,您可以像这样使用squarify:
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import squarify # pip install squarify (algorithm for treemap)</pre>
import pandas as pd
df = pd.DataFrame({'id':[1,2,3,4],'grade':[98,50,10,100],'c':[1000,29,69,150]})
# Create a dataset:
my_values=df.c # YOUR VALUES
# create a color palette,mapped to these values
cmap = matplotlib.cm.Blues
mini=min(my_values)
maxi=max(my_values)
norm = matplotlib.colors.Normalize(vmin=mini,vmax=maxi)
colors = [cmap(norm(value)) for value in my_values]
# Change color
squarify.plot(sizes=my_values,alpha=.8,color=colors )
plt.axis('off')
plt.show()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。