Построение проблемы на logscale в matplotlib в python - PullRequest
3 голосов
/ 23 апреля 2010

Я пытаюсь построить следующие числа в логарифмическом масштабе как точечный график в matplotlib. Обе величины по осям x и y имеют очень разные масштабы, и одна из переменных имеет огромный динамический диапазон (примерно от 0 до 12 миллионов приблизительно), а другая находится между почти 0 и 2. Я думаю, что было бы хорошо построить оба в логарифмическом масштабе.

Я попробовал следующее для подмножества значений двух переменных:

fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(1, 1, 1)
ax.set_yscale('log')
ax.set_xscale('log')
plt.scatter([1.341, 0.1034, 0.6076, 1.4278, 0.0374],
        [0.37, 0.12, 0.22, 0.4, 0.08])

Оси X отображаются в логарифмическом масштабе, но точки не отображаются - появляются только две точки. Есть идеи как это исправить? Кроме того, как я могу сделать так, чтобы эта логарифмическая шкала отображалась на квадратных осях, чтобы корреляция между двумя переменными могла быть интерпретирована из графика рассеяния?

спасибо.

Ответы [ 2 ]

3 голосов
/ 23 апреля 2010

Я не знаю, почему вы получаете только эти два очка. В этом случае вы можете вручную настроить пределы, чтобы убедиться, что все ваши точки соответствуют. Я побежал:

import matplotlib.pyplot as plt

fig = plt.figure(figsize=(8, 8)) # You were missing the =
ax = fig.add_subplot(1, 1, 1)
ax.set_yscale('log')
ax.set_xscale('log')
plt.scatter([1.341, 0.1034, 0.6076, 1.4278, 0.0374],
        [0.37, 0.12, 0.22, 0.4, 0.08])
plt.xlim(0.01, 10) # Fix the x limits to fit all the points
plt.show()

Я не уверен, что понимаю, что понимают "Кроме того, как я могу сделать так, чтобы этот логарифмический масштаб отображался на квадратных осях, чтобы корреляция между двумя переменными могла быть интерпретирована из графика рассеяния?" * средства. Возможно, кто-то еще поймет, или, может быть, вы можете уточнить?

2 голосов
/ 23 апреля 2010

Вы также можете просто сделать,

plt.loglog([1.341, 0.1034, 0.6076, 1.4278, 0.0374], 
                     [0.37, 0.12, 0.22, 0.4, 0.08], 'o')

Создает график, который вам нужен, с правильно масштабированными осями, хотя и не обладает всей гибкостью, получаемой с помощью точного точечного графика.

...