Skip to main content
 首页 » 编程设计

python之减少箱线图 matplotlib 内的空间

2025年05月04日21sky-heaven

我想删除绘图边框内的多余空间

plt.boxplot(parkingData_agg['occupancy'], 0, 'rs', 0, 0.75) 
plt.tight_layout() # This didn't work. Maybe it's not for the purpose I am thinking it is used for. 
plt.yticks([0],['Average Occupancy per slot']) 
fig = plt.figure(figsize=(5, 1), dpi=5) #Tried to change the figsize but it didn't work 
plt.show() 

所需的情节如下图左起第二个情节所示

请您参考如下方法:

代码中的命令顺序有点乱。

  • 您需要在绘图命令之前定义一个图形(否则会生成第二个图形)。
  • 您还需要调用 tight_layout after 设置 ticklabels,这样长的 ticklabel 就可以被考虑在内。
  • 要使位置 0 的刻度与箱线图的位置匹配,需要将其设置为该位置 (pos=[0])

这些变化会导致下面的情节

import matplotlib.pyplot as plt 
import numpy as np 
data = np.random.rayleigh(scale=7, size=100) 
 
fig = plt.figure(figsize=(5, 2), dpi=100) 
 
plt.boxplot(data, False, sym='rs', vert=False, whis=0.75, positions=[0]) 
 
plt.yticks([0],['Average Occupancy per slot']) 
 
plt.tight_layout()  
plt.show() 

然后您可以更改箱线图的宽度以匹配所需的结果,例如

plt.boxplot(..., widths=[0.75]) 

你当然可以把你的情节放在一个子图中,而不是让坐标轴填满图形的整个空间,例如

import matplotlib.pyplot as plt 
import numpy as np 
data = np.random.rayleigh(scale=7, size=100) 
 
fig = plt.figure(figsize=(5, 3), dpi=100) 
ax = plt.subplot(3,1,2) 
 
ax.boxplot(data, False, sym='rs', vert=False, whis=0.75, positions=[0], widths=[0.5]) 
 
plt.yticks([0],['Average Occupancy per slot']) 
 
plt.tight_layout() 
plt.show()