首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何绘制pyplot.hist2d中每个“单元格”中的点的百分比?

如何绘制pyplot.hist2d中每个“单元格”中的点的百分比?
EN

Stack Overflow用户
提问于 2016-08-11 15:24:30
回答 1查看 1.1K关注 0票数 2

我希望直方图的每个“单元格”都有一个数字来表示该“单元格”中总点数的百分比,而不是颜色。除了以编程方式生成矩阵之外,还有其他方法吗?2D histogram of my data

根据M.T的建议,我认为seaborn.heatmap()请求一个2D数据数组。但我有两个一维数组(比如身高和体重,每个数据点都是一个具有(身高,体重)值的人。代码如下:)并且数组值没有特定的顺序。示例代码如下:

代码语言:javascript
运行
复制
plt.hist2d(height, weight, (20, 50), range=np.array([(0, 200), (0, 500)]), cmap=plt.cm.Paired)
plt.colorbar()
plt.show()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-11 20:38:59

您可以使用文本并循环输出到规范化的hist2d,如下所示:

代码语言:javascript
运行
复制
import numpy as np
import matplotlib.pyplot as plt

height = [102, 99, 153, 98, 142, 198, 99]
weight = [201, 192, 295, 181, 315, 311, 181]

counts, xedges, yedges, Image = plt.hist2d(height, weight, (20, 50), 
                                           range=np.array([(0, 200), (0, 500)]), 
                                           cmap=plt.cm.Paired, normed=True)

dx = xedges[2]-xedges[1]
dy = yedges[2]-yedges[1]
for i in range(xedges.size-1):
    for j in range(yedges.size-1):
        xb = xedges[i] + 0.25*dx
        yb = yedges[j] + 0.25*dy 
        plt.text(xb, yb, str(np.round(100.*counts[i,j],2)), fontsize=6 )

plt.show()

这给了我们

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38889884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档