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