График рассеяния по 2D-гистограмме в матплотлибе с логарифмической шкалой - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть два набора точек со значениями (x, y).Один огромный (300 КБ), а другой маленький (2 КБ).Я хочу показать график рассеяния последнего на 2D-гистограмме первого в логарифмическом масштабе.plt.xscale('log') -подобные команды продолжают портить гистограмму, и когда я просто беру журналы x и y, а затем выполняю все графики, мои тики говорят -3, а не 10 ^ -3, и довольно логарифмические второстепенные тики вообще отсутствуют.Какое самое элегантное решение в matplotlib?Нужно ли копать в слое художника?

1 Ответ

0 голосов
/ 24 сентября 2018

Если вы простите немного саморекламы, вы можете использовать мою библиотеку 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

...