Проблема построения в Logscale в Matplotlib в Python
Вопрос
Я пытаюсь построить следующие номера в масштабе журнала как графика разброса в 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 появляются масштабированные журналы, но точки не появляются - появляются только два момента. Любая идея, как это исправить? Кроме того, как я могу сделать эту масштаб журнала на квадратных осях, так что корреляция между двумя переменными можно интерпретировать с графика разброса?
Благодарю.
Решение
Я не знаю, почему вы получаете только эти два очка. Для этого вы можете вручную отрегулировать пределы, чтобы убедиться, что все ваши точки подходят. Я побежал:
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()
Я не уверен, что понимаю понимаю, что «Кроме того, как я могу сделать эту шкалу журнала на квадратных осях, так что корреляция между двумя переменными можно интерпретировать с графика разброса?» означает. Возможно, кто-то еще поймет, или, может быть, вы можете уточнить?
Другие советы
Вы также можете просто сделать,
plt.loglog([1.341, 0.1034, 0.6076, 1.4278, 0.0374],
[0.37, 0.12, 0.22, 0.4, 0.08], 'o')
Это производит сюжет, который вы хотите с правильно масштабированными осями, хотя у него нет никакой гибкости истинного графика разброса.