Лучший способ построить трехмерные данные в большом диапазоне в Python - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть какая-то функция f(x,y) --> z

Диапазон x мал, обычно ~ 0,1 -1

Диапазон y велик, обычно 1e8 - 1e14

Вывод функции z также имеет большой диапазон: ~ 1e25 - 1e45

Как лучше всего построить эту функцию в Python?

Ясно, что мне нужны какие-то логарифмические оси, но проблема масштабирования логов на трехмерных графиках в matplotlib lib - это проблема ( см. Здесь )

Я пробовал график цветовой шкалы, например

fig, ax = plt.subplots()
x = np.linspace(1e8,1e14,500)
y = np.linspace(0.01,1,500)
X,Y = np.meshgrid(x,y)
Z = process(X,Y).T
im = plt.imshow(Z,cmap=cm.RdBu,norm=LogNorm())
im.set_interpolation('bilinear')
cb = fig.colorbar(im) 

Но цвета, как правило, «размываются», например, сюжет в основном состоит только из одного цвета, а галочки x / y идут странно из-за нормализации, которую я не нашел способа исправить.

Есть идеи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...