gpt4 book ai didi

python-3.x - 如何在现有的 matplotlib 轴上设置 seaborn 样式

转载 作者:行者123 更新时间:2023-12-02 03:18:28 24 4
gpt4 key购买 nike

我正在尝试使用 seaborn 为(可能很大)数量的 matplotlib 子图设置轴属性。我希望能够做的是通过一次调用 plt.subplots 生成所有图,然后在生成每个实际图时设置子图样式。不幸的是,似乎 sns 样式仅在生成子图时才重要。

下面的代码是一个最小的(非)工作示例。理想情况下,这两个子图应该有两种不同的风格,但事实并非如此。

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

def makeplt(sub, dat):
sub.contour(dat)

def makepltwith(sub, dat, style):
with sns.axes_style(style) as sty:
sub.contour(dat)

dat = np.arange(100).reshape(10, 10)
with sns.axes_style('ticks'):
fig, subs = plt.subplots(ncols=2)
makeplt(subs[0], dat)
makepltwith(subs[1], dat, 'darkgrid')
plt.show()

有没有办法确保第二个绘图具有我想要的格式?我自己最好的想法是利用 sty 对象手动重新格式化 sub 对象,但我想不出一个简洁的方法运行格式化。

seaborn.__version__=0.7,matplotlib.__version__=1.5 如果重要的话。

最佳答案

我遇到过类似的问题,是这样解决的:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

def add_sp_default(fig,pos):
ax = fig.add_subplot(pos)
return ax

def add_sp_image(fig,pos):
ax = fig.add_subplot(pos)
img=mpimg.imread('http://static.wixstatic.com/media/4afb41_998a1c7c0835c6eae5e159be3c2cfc07.png_1024')
ax.imshow(img)
ax.set_axis_off()
return ax

def add_sp_polar(fig,pos):
ax = fig.add_subplot(pos,projection='polar')
return ax

def add_sp_xkcd(fig,pos):
with plt.xkcd():
ax = fig.add_subplot(pos)
return ax

fig = plt.figure(figsize=(10,7))
ax1 = add_sp_default(fig,221)
ax2 = add_sp_image(fig,222)
ax3 = add_sp_polar(fig,223)
ax4 = add_sp_xkcd(fig,224)

plt.show()

The output

关于python-3.x - 如何在现有的 matplotlib 轴上设置 seaborn 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35127724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com