Lafayette
Lafayette

Reputation: 608

How to use log scale for the axes of a seaborn relplot?

I tried drawing a relplot with log scaled axes. Making use of previous answers, I tried:

import matplotlib.pyplot as plt
import seaborn as sns

f, ax = plt.subplots(figsize=(7, 7))
ax.set(xscale="log", yscale="log")

tips = sns.load_dataset("tips")
sns.relplot(x="total_bill", y="tip", hue='smoker', data=tips)
plt.show()

However the axes were not changed in the result.

enter image description here

How can I remedy this?

Upvotes: 12

Views: 8842

Answers (2)

Soerendip
Soerendip

Reputation: 9148

For sns.relplot you can set the scale as follows:

g = sns.relplot(...)
g.set(xscale="log")
g.set(yscale="log")

This will set the scales for all sub-graphs.

Upvotes: 23

Karthik
Karthik

Reputation: 2431

You can use scatterplot and dont forget to mention your axes in your plot

import matplotlib.pyplot as plt
import seaborn as sns
f, ax = plt.subplots(figsize=(7, 7))
tips = sns.load_dataset("tips")
ax.set(xscale="log", yscale="log")
sns.scatterplot(x="total_bill", y="tip", hue='smoker', data=tips,ax=ax)
plt.show()

Edit - relplot is a figure-level function and does not accept the ax= paramter

Upvotes: 1

Related Questions