亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

二維直方圖:獲取完整 nbins x nbins 的結果

二維直方圖:獲取完整 nbins x nbins 的結果

搖曳的薔薇 2022-12-20 11:17:46
我正在使用 matplotlib 的 hist2d 函數制作我擁有的數據的二維直方圖,但是我無法解釋結果。這是我的情節:這是使用以下行創建的:hist = plt.hist2d(X, Y, (160,160), norm=mpl.colors.LogNorm(vmin=1, vmax=20))這將返回 (160, 160) 的二維數組,以及 bin 邊緣等。在圖中,有具有高頻值的箱(黃色箱)。我希望能夠獲得此直方圖的結果并過濾掉具有低值的箱子,保留高箱子。但我希望有 160*160 個值,但我只能找到 160 個 X 和 160 個 Y 值。我想做的基本上是從密度較低的數據中過濾出密度較高的數據。如果這意味著將數據表示為單個值(一個 bin),那么就可以了。我是不是誤解了函數,還是沒有正確訪問數據結果?我也嘗試過 spicy,但結果似乎是相同或相似的格式。
查看完整描述

2 回答

?
阿波羅的戰車

TA貢獻1862條經驗 獲得超6個贊

不確定這是否是您想要的。


hist2d 文檔指定該函數返回一個大小為 4 的元組,其中第一項h是熱圖。


這h將具有與 相同的形狀bins。


您可以捕獲輸出(它仍會繪制),并用于argwhere查找值超過第 90 個百分位數的坐標:


h, xedges, yedges, img = hist = plt.hist2d(X, Y, bins=(160,160), norm=mpl.colors.LogNorm(vmin=1, vmax=20))


print(list(np.argwhere(h > np.percentile(h, 90))))


查看完整回答
反對 回復 2022-12-20
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

你需要Seaborn包。

你提到

我希望能夠獲得此直方圖的結果并過濾掉具有低值的箱子,保留高箱子。

絕對應該使用其中之一:

  1. seaborn.joinplot(...,kind='hex'):它顯示落在六邊形箱內的觀測值的計數。該圖最適合相對較大的數據集。

  2. seaborn.joinplot(...,kind='kde'):使用核密度估計來可視化雙變量分布。我推薦它更好。

示例“哪里”

使用級別數n_levelsshade_lowest=False忽略低值。

import seaborn as sns

import numpy as np

import matplotlib.pylab as plt

x, y = np.random.randn(2, 300)

plt.figure(figsize=(6,5))

sns.kdeplot(x, y, zorder=0, n_levels=6, shade=True, cbar=True, 

     shade_lowest=False, cmap='viridis')

http://img1.sycdn.imooc.com//63a129ea00018ac403650249.jpg

查看完整回答
反對 回復 2022-12-20
  • 2 回答
  • 0 關注
  • 108 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號