matplotlib seaborn 画图有时出现图像超过画布的情况
最近遇到了这个问题,我的画法是形如
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib as mpl
fig ,ax1 = plt.subplots(figsize=(12,9))
sns.distplot(df1['bj_huiyan'],ax=ax1,label='df1')
sns.distplot(df2['bj_huiyan'],ax=ax1,label='df2')
sns.distplot(df3['bj_huiyan'],ax=ax1,label='df3')
ax1.set_xlabel(u'score',fontsize=12)
ax1.set_ylabel(u'density',fontsize=12)
ax1.legend()
plt.show()
还纳闷以为是模块版本的bug之类,原来是这种写法,第一个sns.distplot决定了坐标轴的宽和高,所以
解决办法1:把最高的一个调到第一行
解决办法2:手动调整一下坐标的高度
具体函数可以用plt.ylim((0,0.007))
也可以用ax1.axis(x0,x1,y0,y1)直接设置
ax1.axis()会返回x0,x1,y0,y1
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib as mpl
fig ,ax1 = plt.subplots(figsize=(12,9))
sns.distplot(df1['bj_huiyan'],ax=ax1,label='df1')
sns.distplot(df2['bj_huiyan'],ax=ax1,label='df2')
sns.distplot(df3['bj_huiyan'],ax=ax1,label='df3')
ax1.set_xlabel(u'score',fontsize=12)
ax1.set_ylabel(u'density',fontsize=12)
ax1.legend()
plt.show()
还纳闷以为是模块版本的bug之类,原来是这种写法,第一个sns.distplot决定了坐标轴的宽和高,所以
解决办法1:把最高的一个调到第一行
解决办法2:手动调整一下坐标的高度
具体函数可以用plt.ylim((0,0.007))
也可以用ax1.axis(x0,x1,y0,y1)直接设置
ax1.axis()会返回x0,x1,y0,y1
留言
張貼留言