Jupyter使用seaborn.catplot绘制小提琴图设置plt.figure大小出现0轴提示
seaborn catplot调整画布尺寸不生效问题解决
问题原因
sns.catplot() 是seaborn的Figure级接口,调用时会自动创建独立的新画布,你提前通过plt.figure()声明的画布不会被catplot复用,这个提前创建的空画布没有任何绘图内容,才会输出Figure size with 0 Axes的提示,最终展示的是catplot默认参数创建的画布,所以尺寸调整不生效。
解决方法
方法1:直接通过catplot的参数设置画布属性
直接把尺寸、dpi参数传给catplot即可,Figure级接口用height(单张子图高度,单位英寸)和aspect(宽高比=宽度/高度)控制尺寸,总宽度 = height × aspect。要实现16×10英寸、dpi=80的效果,写法如下:
sns.catplot(x=" ", y=" ", hue=" ", kind="violin", split=True, data=data, height=10, # 高度设为10英寸 aspect=1.6, # 宽高比1.6,总宽度=10*1.6=16英寸 dpi=80) plt.show()
方法2:获取catplot返回的FacetGrid对象后调整尺寸
如果需要后续动态调整画布,也可以拿到catplot返回的对象后,修改画布属性:
g = sns.catplot(x=" ", y=" ", hue=" ", kind="violin", split=True, data=data) # 调整画布尺寸 g.fig.set_size_inches(16, 10) # 调整dpi g.fig.set_dpi(80) plt.show()
内容的提问来源于stack exchange,提问作者didadidaaaaa
相关产品推荐
相关产品推荐

