[英]How to set zdir in Axes3D of matplotlib to get better waterfall
[英]How to set seaborn styles on existing matplotlib axes
我正在尝试使用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()
不,这是不可能的。 创建轴时应用轴样式。
当然,还有其他方法可以设置子图,而不涉及将它们全部放在一行代码中,这对于特定于子图的样式更为合适。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.