我正在为具有数百万个数据点的某些数据制作2D直方图。 matplotlib.hist2d(x,y,bins,norm=LogNorm())效果很好,并在大约5秒内生成了一个图,但我喜欢seaborn.jointplot()的边际直方图。如何像在所附的seaborn.jointplot()图中以点的对数密度为matplotlib.hist2d()中的点着色?使用KDE花费的时间太长(大约一分钟后我放弃了),并且有很多需要创建的数字。因此,“获取”颜色的时间是一个因素。另外,如何将边际直方图添加到matplotlib.hist2d()

plt.hist2d(x,y,100,norm=LogNorm(),cmap='jet')

python - 淡色海参图的密度-LMLPHP

sns.jointplot(x=x, y=y)

python - 淡色海参图的密度-LMLPHP

最佳答案

seaborn中可能还有另一种直接获得颜色图的方法。我还没找到。这是一个骇人听闻的示例解决方案,可用于处理一些随机数据。关于第二个问题,我建议您发布一个新问题。

诀窍是先使用seaborn创建一个jointplot,然后隐藏2d散点图,然后使用plt.hist2d重新绘制它

import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

# some random data
x = np.random.normal(size=100000)
y = x * 3.5 + np.random.normal(size=100000)

ax1 = sns.jointplot(x=x, y=y)
ax1.ax_joint.cla()
plt.sca(ax1.ax_joint)

plt.hist2d(x, y, bins=(100, 100), cmap=cm.jet);


python - 淡色海参图的密度-LMLPHP

09-05 14:47