在子图中更改 seaborn 样式
Changing seaborn style in subplots
我正在尝试更改同一图中两个绘图的样式:
import numpy as np
from numpy.random import randn
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(15,6))
data = randn(7500);
sns.set_style("whitegrid");
ax1.hist(data, bins=8);
sns.set_style("darkgrid");
ax2.hist(data, bins=8);
这行不通,两个情节最终都有 "darkgrid"
背景。我也尝试修补 axes_style()
但没有成功。
matplotlib Axes 的工作方式是样式参数在创建时成为 Axes 对象的 属性,而不是在绘制对象时。因此,虽然无法使用 plt.subplots
制作具有不同子图样式的图形,但您可以使用独立创建轴的方法之一来完成:
fig = plt.figure()
with sns.axes_style("whitegrid"):
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
另请注意,我正在使用上下文管理器来设置第一个 Axes 的样式,因此第二个 Axes 将具有默认样式。可以像您在问题中所做的那样在每个 add_subplot
命令之前使用 sns.set_style
,但是使用上下文管理器创建非默认图感觉有点像 Pythonic。
我正在尝试更改同一图中两个绘图的样式:
import numpy as np
from numpy.random import randn
import matplotlib as mpl
import matplotlib.pyplot as plt
import seaborn as sns
fig, (ax1, ax2) = plt.subplots(nrows=1, ncols=2, figsize=(15,6))
data = randn(7500);
sns.set_style("whitegrid");
ax1.hist(data, bins=8);
sns.set_style("darkgrid");
ax2.hist(data, bins=8);
这行不通,两个情节最终都有 "darkgrid"
背景。我也尝试修补 axes_style()
但没有成功。
matplotlib Axes 的工作方式是样式参数在创建时成为 Axes 对象的 属性,而不是在绘制对象时。因此,虽然无法使用 plt.subplots
制作具有不同子图样式的图形,但您可以使用独立创建轴的方法之一来完成:
fig = plt.figure()
with sns.axes_style("whitegrid"):
ax1 = fig.add_subplot(121)
ax2 = fig.add_subplot(122)
另请注意,我正在使用上下文管理器来设置第一个 Axes 的样式,因此第二个 Axes 将具有默认样式。可以像您在问题中所做的那样在每个 add_subplot
命令之前使用 sns.set_style
,但是使用上下文管理器创建非默认图感觉有点像 Pythonic。