La fonction lmplot
de Seaborn peut-elle tracer une échelle log-log? Ceci est lmplot sur une échelle normale
import numpy as np
import pandas as pd
import seaborn as sns
x = 10**arange(1, 10)
y = 10** arange(1,10)*2
df1 = pd.DataFrame( data=y, index=x )
df2 = pd.DataFrame(data = {'x': x, 'y': y})
sns.lmplot('x', 'y', df2)
Si vous voulez simplement tracer une régression simple, il sera plus facile d'utiliser seaborn.regplot
. Cela semble fonctionner (même si je ne sais pas où va la petite grille de l'axe y)
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
x = 10 ** np.arange(1, 10)
y = x * 2
data = pd.DataFrame(data={'x': x, 'y': y})
f, ax = plt.subplots(figsize=(7, 7))
ax.set(xscale="log", yscale="log")
sns.regplot("x", "y", data, ax=ax, scatter_kws={"s": 100})
Si vous devez utiliser lmplot
à d'autres fins, c'est ce qui vient à l'esprit, mais je ne suis pas sûr de ce qui se passe avec les graduations de l'axe x. Si quelqu'un a des idées et que c'est un bug chez seaborn, je suis heureux de le corriger:
grid = sns.lmplot('x', 'y', data, size=7, truncate=True, scatter_kws={"s": 100})
grid.set(xscale="log", yscale="log")
Appelez d'abord la fonction marine. Il retourne un objet FacetGrid
qui a un attribut axes
(un tableau numpy 2D de matplotlib Axes
). Saisissez l'objet Axes
et transmettez-le à l'appel à df1.plot
.
import numpy as np
import pandas as pd
import seaborn as sns
x = 10**np.arange(1, 10)
y = 10**np.arange(1,10)*2
df1 = pd.DataFrame(data=y, index=x)
df2 = pd.DataFrame(data = {'x': x, 'y': y})
fgrid = sns.lmplot('x', 'y', df2)
ax = fgrid.axes[0][0]
df1.plot(ax=ax)
ax.set_xscale('log')
ax.set_yscale('log')