matplotlib中具有对数刻度的二维直方图上的散点图

时间:2018-09-20 19:26:33

标签: python matplotlib plot histogram scatter-plot

我有两组具有值(x,y)的点。一种是巨大的(300k),一种是较小的(2k)。我想以对数对数比例显示前者的二维直方图上的后者散点图。类似plt.xscale('log')的命令不断弄乱直方图,当我仅记录x和y的对数然后进行所有绘图时,我的刻度表示为-3而不是10 ^ -3,漂亮的对数小刻度完全丢失了。 matplotlib中最优雅的解决方案是什么?我必须深入艺术家层吗?

1 个答案:

答案 0 :(得分:0)

如果您原谅一些自我宣传,则可以使用我的图书馆physt(请参阅https://github.com/janpipek/physt)。然后,您可以编写如下代码:

import numpy as np
import matplotlib.pyplot as plt
from physt import h2

# Data
r1 = np.random.normal(0, 1, 20000)
r2 = np.random.normal(0, .3, 20000) + r1
x = np.exp(r1)
y = np.exp(r2)

# Plot scatter
fig, ax = plt.subplots()
ax.scatter(x[:1000], y[:1000], s=2)

H = h2(x, y, "exponential")
H.plot(ax=ax, zorder=-1)   # Necessary to put behind

我希望是您的问题的解决方案:

physt-produced histogram+scatter